絶対に。最近では、通常レッスン2にある3つのことは、ずっと後に移動するはずです。
- char *、strlen、strxxxメソッドなどの配列としての文字列
- 一般的な配列とポインター演算
- あなたが新しいものを削除、[[]あなたが新しい[]、そしてデストラクタさえ削除
通常レッスン99にあるこれらのことは、ずっと早く動くはずです。
- 使用するものとしてのテンプレート(書き込みではなく)
- std :: string
- std :: shared_ptr <>
- std :: vector <>、イテレータ、その他のコレクション
Eveyの生のポインタはすぐにスマートポインタラッパーに渡されます(std :: moveと右辺値の参照を説明する必要があるので、共有から始めて後で一意であると考えます)。これを行うと、C ++の学習はJavaまたはC#の学習に似た感じになり、言語と同時にライブラリを学習できます。それはまた、多くの記憶作業を奪い、人々が落とし穴を心配することを少なくします。
また、コレクションを反復処理して各要素に何かを実行したいときに初めてラムダを使用します。
免責事項:私は現在、PluralsightのC ++コースを書いており、このアプローチを使用しています。最後のモジュールは「他の人のコードを理解する」ことです。そこで、char *文字列、手動メモリ管理、ポインタ演算などの混乱を招くものを配置します。
更新: C ++ 0xの存在が、C ++ 03で教えることができたものを教えることに影響を与える理由を尋ねた人々がいます。私はそれがいくつかのことだと思う:
- コレクションに優しい真にスマートなポインターは、常に新しい/削除、ポインター演算などに頼っていた「従業員ポインターの配列」のようなものの必要性を取り除きます。
- autoはイテレータ宣言の痛みを取り除きます
- ラムダは、普通の人が行うようなforeachingを行います
- 構文解析のように些細な
>>
ことでも、テンプレートのテンプレートを宣言するときにそこにある落とし穴を排除します
- 等々
私の見方では、C ++を教える方法については少し前に変更できたかもしれませんが、フォールバックのために昔ながらの方法が必要だったため、またはそれを教えることは多くのことを含んでいたため、不可解な知識の。