Hướng dẫn C++ hiện đại
Hướng dẫn này nhằm cung cấp cho các nhà phát triển có kinh nghiệm một tài liệu tham khảo nhanh về các tính năng mới của C++11/14/17/20. Nó bao gồm các cải tiến về khả năng sử dụng ngôn ngữ, hiệu suất tại thời điểm chạy, các cấu trúc dữ liệu mới, con trỏ thông minh và quản lý bộ nhớ, biểu thức chính quy, lập trình đồng thời, và phần giới thiệu trước về C++20.
Tổng quan khóa học
Tóm tắt nội dung
Hướng dẫn này được thiết kế nhằm cung cấp cho các nhà phát triển có kinh nghiệm một tài liệu tham khảo nhanh về các tính năng mới trong C++11/14/17/20. Nội dung bao gồm cải tiến về khả năng sử dụng ngôn ngữ, hiệu suất tại thời điểm chạy, cách sử dụng các container mới, con trỏ thông minh và quản lý bộ nhớ, biểu thức chính quy, lập trình đồng thời, cùng với cái nhìn tổng quan về C++20.
Nhanh chóng làm chủ C++11/14/17/20 và bước qua cánh cửa của lập trình C++ hiện đại.
Tác giả: Âu Trường Khôn (Ou Changkun)
Ghi nhận: Được cấp phép theo điều khoản CC BY-NC-ND 4.0, xin cảm ơn tất cả các nhà đóng góp trên GitHub và cộng đồng hỗ trợ liên quan.
Mục tiêu học tập
- Nhận diện và xác minh môi trường biên dịch C++ và kiến trúc mục tiêu bằng công cụ dòng lệnh.
- Giải thích sự tương thích chuẩn và lịch sử chồng chéo giữa C (C89, C99, C11) và C++ (C++98, C++1x).
- Triển khai việc liên kết xuyên ngôn ngữ thành công bằng cách sử dụng tiêu đề
extern "C"và quy trình biên dịch đa giai đoạn. - Giải quyết sự mơ hồ của con trỏ bằng
nullptrvà triển khai logic tại thời điểm biên dịch bằngconstexprvàif constexpr. - Đơn giản hóa các khai báo phức tạp bằng
auto,decltype, và đặt tên kiểu (using) trong khi đảm bảo thiết kế hướng đối tượng vững chắc nhờoverridevàfinal. - Thiết kế mã nguồn mang tính tổng quát cao bằng các mẫu biến số, biểu thức gập (fold expressions), và suy luận tham số mẫu không phải kiểu.
- Xác định và triển khai biểu thức Lambda với các chế độ bắt giá trị khác nhau (Giá trị, Tham chiếu, Biểu thức, và Tổng quát).
- Sử dụng
std::functionvàstd::bindđể tạo các bao bọc hàm linh hoạt và ứng dụng hàm một phần. - Phân loại biểu thức thành Lvalues, Prvalues và Xvalues, và áp dụng cơ chế chuyển động (Move Semantics) để tối ưu hóa quản lý tài nguyên lớp.
- Phân biệt mô hình bộ nhớ và các trường hợp sử dụng của
std::array(kích thước cố định, ngăn xếp) vàstd::vector(kích thước động, vùng nhớ heap).