Auto được bắt đầu sử dụng từ C++11, nó giúp lập trình viên tối giản việc khai báo biến với ý nghĩa “tự động” suy luận kiểu dữ liệu của biến và tất nhiên công việc đó thuộc về compiler. Giống như trường hợp của template, compiler suy luận kiểu dữ liệu của biến theo…… Continue reading Auto – P1
Suy luận kiểu dữ liệu trong template
Nếu bạn muốn tạo ra một function được sử dụng cho nhiều kiểu dữ liệu khác nhau mà không muốn viết lại code nhiều lần, template là sự lựa chọn hoàn hảo. Điều tương tự cũng được áp dụng cho class, chúng ta có thể sử dụng 2 loại template: function template và class template.…… Continue reading Suy luận kiểu dữ liệu trong template
Toán tử “=” và điều cần lưu ý
Đó là một trong những phép toán mà chúng ta có thể định nghĩa cho lớp nhằm gán giá trị cho một đối tượng theo giá trị của một đối tượng khác (hay còn được gọi là assignment operator). C++ được thiết kế để làm cho class cũng có thể thực hiện các phép toán…… Continue reading Toán tử “=” và điều cần lưu ý
Virtual và những điều cần tránh
Nếu bạn là một fan trung thành của trường phái Cpp hay bạn đang phải làm việc với nó vì dòng đời xô đẩy, chắc chắn bạn hiểu mục đích của từ khóa “virtual”. Nếu không có virtual, sẽ chẳng có đa hình hay abtract gì cả. Nếu không có virtual, thậm chí, chương trình…… Continue reading Virtual và những điều cần tránh
Những hàm ngầm tạo (phần 2)
Ở phần trước, chúng ta đã biết, trình biên dịch có thể tự động tạo ra một số hàm nhất định cho lớp. Sẽ thú vị hơn, nếu chúng ta biết thêm rằng những hàm đó được implement như thế nào. Hàm tạo mặc định và hàm hủy Lớp bao gồm những biến thành viên,…… Continue reading Những hàm ngầm tạo (phần 2)
Những hàm ngầm tạo (phần 1)
Khi nào một class rỗng không phải là một class rỗng? Đó là khi bạn khai báo nó trong C++ :). Trình biên dịch năng động hơn bạn nghĩ, khi chúng ta không khai báo bất kỳ nội dung gì cho một class, trình biên dịch sẽ tự động tạo ra một số hàm cho…… Continue reading Những hàm ngầm tạo (phần 1)
Khởi tạo trước khi sử dụng (phần 2)
Thứ tự khởi tạo giữa các biến global Bạn rất thông minh, một ngày đẹp trời, bạn tạo ra một siêu máy tính khỏe nhất thế giới, bạn định nghĩa nó trong file QuantumComputer.h //in file QuantumComputer.h class QuantumComputer{ //… public: long getSpeed(); //… }; Bạn sở hữu bằng sáng chế và thông báo với…… Continue reading Khởi tạo trước khi sử dụng (phần 2)
Khởi tạo trước khi sử dụng (phần 1)
Trong C++ cũng như nhiều ngôn ngữ khác, chúng ta không thể biết được giá trị của một biến khi nó được khai báo bởi vì chương trình cấp phát cho nó một vùng nhớ ngẫu nhiên và chỉ có chúa mới biết giá trị của vùng nhớ đó là bao nhiêu (hoặc chúa cũng…… Continue reading Khởi tạo trước khi sử dụng (phần 1)
Sử dụng const bất cứ khi nào có thể (phần 4) – Mutable
Const và function (tiếp) Mutable Bạn có một đối tượng là hằng, tạm gọi là O, tất nhiên rồi, để sử dụng O bạn sẽ tạo ra phương thức F cho nó là hàm hằng. Theo quy ước, F không thể thay đổi bất kỳ giá trị trường nào trong O. Nhưng, đã có khi…… Continue reading Sử dụng const bất cứ khi nào có thể (phần 4) – Mutable
Sử dụng const bất cứ khi nào có thể (phần 3) – hàm hằng và overloading
Const và function (tiếp) Hàm hằng Giống như trường hợp của hằng con trỏ và con trỏ hằng, chúng ta cũng có hàm trả về giá trị hằng số và hàm hằng. class City { private: int population; public: int getPopulation() const; // hàm hằng đây nek :p int setArea(); } Hai đặc…… Continue reading Sử dụng const bất cứ khi nào có thể (phần 3) – hàm hằng và overloading