Chắc chắn rồi. Ngày nay, ba điều thường có trong bài 2 sẽ di chuyển nhiều, muộn hơn nhiều:
- chuỗi dưới dạng mảng char *, các phương thức strlen, strxxx, v.v.
- mảng nói chung và số học con trỏ
- xóa những gì bạn mới, xóa [] những gì bạn mới [] và thậm chí cả các hàm hủy
Những điều thường có trong bài 99 nên di chuyển nhiều, sớm hơn nhiều
- các mẫu như những thứ để sử dụng (viết, không quá nhiều)
- std :: chuỗi
- std :: shared_ptr <>
- std :: vector <>, iterators, các bộ sưu tập khác
Evey nguyên con trỏ nên ngay lập tức được đưa cho một trình bao bọc con trỏ thông minh (tôi sẽ bắt đầu với chia sẻ và xem xét duy nhất sau này vì nó yêu cầu giải thích các tham chiếu std :: move và rvalue). Làm điều này sẽ làm cho việc học C ++ cảm thấy rất giống như học Java hoặc C #, nơi bạn học thư viện cùng lúc với ngôn ngữ. Nó cũng sẽ lấy đi rất nhiều công việc bộ nhớ, và khiến mọi người bớt lo lắng về vấn đề gotchas.
Tôi cũng sẽ làm việc lambdas vào bức tranh lần đầu tiên chúng tôi muốn lặp lại qua một bộ sưu tập và làm một cái gì đó cho từng yếu tố.
Tuyên bố miễn trừ trách nhiệm: Tôi đang viết một khóa học C ++ cho Pluralsight ngay bây giờ và sử dụng phương pháp này. Mô-đun cuối cùng là "hiểu mã của người khác" và đó là nơi tôi sẽ đặt những thứ khó hiểu như chuỗi char *, quản lý bộ nhớ thủ công, số học con trỏ, v.v.
Cập nhật: một vài người đã hỏi tại sao sự tồn tại của C ++ 0x lại truyền cảm hứng cho việc dạy những điều có thể được dạy với C ++ 03. Tôi nghĩ đó là một số điều:
- con trỏ thực sự thông minh, thân thiện với bộ sưu tập, loại bỏ nhu cầu về những thứ như "một mảng con trỏ nhân viên" khiến chúng ta luôn rơi vào mới / xóa, số học con trỏ, v.v.
- tự động lấy đi nỗi đau của khai báo lặp
- lambdas làm cho việc giảng dạy một cái gì đó một người bình thường sẽ làm
- thậm chí một cái gì đó tầm thường như phân tích cú pháp sẽ
>>
loại bỏ chính xác gotcha sẽ có khi khai báo một số mẫu của mẫu
- và v.v.
Theo cách tôi thấy, có những điều chúng ta có thể đã thay đổi về cách chúng ta dạy C ++ một thời gian trước đây, nhưng một số người trong chúng ta đã giữ lại vì chúng ta vẫn cần cách học cũ để dự phòng hoặc bởi vì việc dạy nó chỉ liên quan rất nhiều của kiến thức phức tạp.