C++ 构造函数
构造函数
构造函数是一种特殊的方法,当创建类的对象时会自动调用它。
要创建构造函数,请使用与类相同的名称,后跟括号 ():
实例
class MyClass { // 类
public: // 访问说明符
MyClass() { // 构造函数
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // 创建 MyClass 的一个对象(这将调用构造函数)
return 0;
}
构造函数规则
- 构造函数与类具有相同的名称。
- 它没有返回类型(甚至没有
void)。 - 它通常声明为
public。 - 它在创建对象时自动调用。
带参数的构造函数
构造函数也可以接受参数(就像普通函数一样),这对于为属性设置初始值很有用。
下面的类具有 brand、model 和 year 属性,以及一个带有不同参数的构造函数。在构造函数内部,我们将属性设置为等于构造函数的参数(brand = x 等)。
当我们调用构造函数时(通过创建类的对象),我们将参数传递给构造函数,这将把相应属性的值设置为相同的值:
实例
class Car { // 类
public: // 访问说明符
string brand; // 属性
string model; // 属性
int year; // 属性
Car(string x, string y, int z) { // 带参数的构造函数
brand = x;
model = y;
year = z;
}
};
int main() {
// 创建 Car 对象并使用不同的值调用构造函数
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// 打印值
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
在类外部定义的构造函数
您也可以使用作用域解析运算符 :: 在类外部定义构造函数。
实例
class Car { // 类
public: // 访问说明符
string brand; // 属性
string model; // 属性
int year; // 属性
Car(string x, string y, int z); // 构造函数声明
};
// 在类外部定义构造函数
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// 创建 Car 对象并使用不同的值调用构造函数
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// 打印值
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
为什么构造函数有用
当您创建对象时,构造函数会自动运行。它们会进行设置,以便一切立即准备就绪。
可以这样理解:当您订购披萨(对象)时,构造函数就是那位在披萨送到您手中之前添加酱汁、奶酪和配料的厨师——您不必自己动手!