Абсолютно. У ці дні три речі, які зазвичай проходять на уроці 2, повинні рухатися набагато пізніше:
- рядки як масиви char *, методи strlen, strxxx тощо
- масиви загальної та вказівної арифметики
- видаліть нове, видаліть [] те, що ви нового [], і навіть деструктори
Ці речі, як правило, на уроці 99, повинні рухатися набагато, набагато раніше
- шаблони як речі для використання (писати, не так багато)
- std :: string
- std :: shared_ptr <>
- std :: vector <>, ітератори, інші колекції
Evey необроблений вказівник повинен бути негайно наданий обгортці інтелектуального вказівника (я б почав із загального доступу, а пізніше розглянемо унікальний, оскільки він вимагає пояснення посилань std :: move та rvalue). Це дозволить вивчити C ++ дуже схоже на вивчення Java або C #, де ви вивчаєте бібліотеку одночасно з мовою. Це також забере багато роботи з пам’яттю, а людей менше турбуватиметься за ґетчі.
Я б також працював лямбда в картину, коли ми вперше хотіли повторити колекцію і зробити щось для кожного елемента.
Відмова: Я зараз пишу курс C ++ для Pluralsight і використовую такий підхід. Останній модуль - «розуміння чужого коду», і саме там я поміщую заплутані речі, такі як рядки char *, ручне управління пам’яттю, арифметика вказівника тощо.
Оновлення: кілька людей запитують, чому існування C ++ 0x надихає на викладання речей, які можна було б навчити за допомогою C ++ 03. Я думаю, що це ряд речей:
- по-справжньому розумні покажчики, які є зручними для колекціонування, забирають потребу в таких речах, як "масив покажчиків співробітників", які змушували нас завжди потрапляти на нові / видалення, арифметичні вказівники тощо
- auto забирає біль ітераторських оголошень
- лямбди змушують проповідувати те, що робила звичайна людина
- навіть щось настільки тривіальне, як синтаксичний аналіз
>>правильно виключає ґутчу, яка була б там при оголошенні деяких шаблонів шаблонів.
- і так далі
Як я це бачу, є речі, які ми могли змінити щодо того, як ми навчали C ++ деякий час тому, але деякі з нас стримувались, тому що нам все-таки потрібен старий шкільний шлях для відпаду або тому, що для його викладання просто було багато таємних знань.