Trình xây dựng C++
nhà xây dựng
Hàm tạo trong C++ là một phương thức đặc biệt được gọi tự động khi một đối tượng của lớp được tạo.
Để tạo hàm tạo, hãy sử dụng cùng tên với lớp, theo sau là dấu ngoặc đơn ()
:
Ví dụ
class MyClass { // The class
public:
// Access specifier
MyClass() {
// Constructor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // Create an object of MyClass (this will call
the constructor)
return 0;
}
Hãy tự mình thử » Lưu ý: Hàm tạo có cùng tên với lớp, nó luôn là public
và không có bất kỳ giá trị trả về nào.
Thông số hàm tạo
Trình xây dựng cũng có thể lấy tham số (giống như các hàm thông thường), điều này có thể hữu ích cho việc đặt giá trị ban đầu cho thuộc tính.
Lớp sau có các thuộc tính brand
, model
và year
và một hàm tạo với các tham số khác nhau. Bên trong hàm tạo, chúng ta đặt các thuộc tính bằng các tham số của hàm tạo ( brand=x
, v.v.). Khi chúng ta gọi hàm tạo (bằng cách tạo một đối tượng của lớp), chúng ta truyền các tham số cho hàm tạo, nó sẽ đặt giá trị của các thuộc tính tương ứng giống nhau:
Ví dụ
class Car { // The class
public: // Access specifier
string brand; // Attribute
string model; // Attribute
int year; // Attribute
Car(string x, string y, int z)
{ // Constructor with parameters
brand =
x;
model = y;
year = z;
}
};
int main() {
//
Create Car objects and call the constructor with different values
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang",
1969);
// Print values
cout << carObj1.brand << " "
<< carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Hãy tự mình thử » Cũng giống như hàm, hàm tạo cũng có thể được định nghĩa bên ngoài lớp. Đầu tiên, khai báo hàm tạo bên trong lớp, sau đó định nghĩa nó bên ngoài lớp bằng cách chỉ định tên của lớp, theo sau là toán tử phân giải phạm vi ::
, theo sau là tên của hàm tạo (giống với lớp) :
Ví dụ
class Car { // The class
public: // Access
specifier
string brand; // Attribute
string model; // Attribute
int year;
// Attribute
Car(string x, string y, int z); //
Constructor declaration
};
// Constructor definition outside the
class
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// Create
Car objects and call the constructor with different values
Car
carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " <<
carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Hãy tự mình thử »