Một hàm có tên trùng với tên của class chứa nó được gọi là hàm khởi tạo (hoặc hàm tạo) – constructor. Hàm khởi tạo được sử dụng để xây dựng các đối tượng trong quá trình tạo ra nó, tức là khởi tạo giá trị cho các trường, cấp phát bộ nhớ, tạo ra các đối tượng khác… Hàm khởi tạo có thể truy cập vào tất cả các thành phần của đối tượng giống như bất kỳ hàm thành viên nào khác nhưng không được gọi trực tiếp.
Hàm khởi tạo không được khai báo bằng cách sử dụng các đặc tả kiểu trả về, kể cả kiểu void.
Class sau →
1 2 3 4 5 6 7 8 |
class Sample { public: Sample(void) { this->value = -1; } void setVal(int value) { this->value = value; } int getVal(void) { return value; } private: int value; }; |
được trang bị một hàm tạo (tên là Sample – giống với tên của class). Hàm tạo này khởi tạo cho trường value giá trị là -1.
Khai báo một đối tượng của class Sample, ví dụ như sau →
1 |
Sample object; |
sẽ gọi hàm tạo của class Sample một cách ngầm định. Bạn có thể đảm bảo rằng hàm tạo làm đúng công việc của nó bằng cách sử dụng câu lệnh sau →
1 |
cout << object.getVal() << endl; |
Nếu chưa có thay đổi nào trên đối tượng kể từ lúc khai báo thì giá trị -1 phải được xuất ra màn hình.
Lưu ý: bạn không được phép làm như này →
1 |
object.Sample() |
hoặc
1 |
Sample::Sample(); |