C++11 những cái hay dùng
Contents
Bài tham khảo từ link:
http://www.codeproject.com/Articles/570638/Ten-Cplusplus-Features-Every-Cplusplus-Developer
Sử dụng auto
Trong C++11 từ khóa auto được dùng để compiler có thể tự nhận diện type của dữ liệu đầu vào thông qua rvalue
VD:
|
|
Có một lưu ý là khi sử dụng auto cho biến bất kì thì ta luôn phải initialize cho biến đó. VD: > auto a; // error
Sử dụng nullptr
Để gán giá trị null cho con trỏ
|
|
ForEach
Duyệt tất cả các phần tử của mảng VD:
|
|
Override và final
Cái này là một định danh. Giả sử với vd sau:
|
|
Trường hợp này, function f ở class D là overload (vì param truyền vào là khác kiểu nhau). Hoặc với vd khác:
|
|
Ở trường hợp này function f ở class D vẫn là overload chứ ko phải là override. Để tránh gây nhầm lẫn, C++11 thêm định danh là override và final giống như trong java. 2 từ khóa này có thể đi liền nhau “override final”
|
|
Lưu ý: override chỉ có tác dụng nếu function ở class base là virtual.
Enum class
VD có 2 enum
|
|
Cả 2 enum này đều có key giống nhau, dẫn đến compiler không phân biệt được. Cách giải quyết ở phiên bản cũ là dùng namespace, tuy nhiên ở C++11 cái này đơn giản hơn bằng cách sử dụng enum class như sau:
|
|
Lambda
Đây là điểm mới mà C++03 không có
Cấu trúc nó là capture-list { body };
VD:
|
|
[&] sẽ giúp complier hiểu được là biến a được khai báo bên ngoài lambda function sẽ được tham chiếu vào trong lambda function. Còn [=] có nghĩa là copy giá trị của a vào trong hàm lambda, tuy nhiên không thể thay đổi giá trị của a. (chỉ có tác dụng copy).
Author VietHQ
LastMod 2016-09-05