构造函数只能有一个
时间: 2023-09-07 21:13:31 浏览: 69
在 C++ 中,一个类可以定义多个构造函数,以便在创建对象时能够根据不同的参数列表选择合适的构造函数进行对象的初始化。
一个类可以有以下几种类型的构造函数:
1. 默认构造函数:没有参数的构造函数被称为默认构造函数,如果没有定义构造函数,则编译器会提供一个默认构造函数,用于创建对象时对对象进行默认初始化。
2. 带参数的构造函数:带有参数的构造函数可以根据参数列表的不同进行重载,用于创建对象时对对象进行带参数的初始化。
3. 拷贝构造函数:用于在创建对象时将一个已有对象的值拷贝给新对象,以便新对象和已有对象的属性相同。
一个类可以同时定义多个构造函数,它们之间可以通过参数列表的不同进行重载,以便在创建对象时选择合适的构造函数进行对象的初始化。
下面是一个例子,展示了一个类中同时定义了多个构造函数:
```c++
class MyClass {
public:
MyClass() {
std::cout << "Default constructor" << std::endl;
}
MyClass(int x) {
std::cout << "Constructor with one parameter" << std::endl;
}
MyClass(int x, int y) {
std::cout << "Constructor with two parameters" << std::endl;
}
MyClass(const MyClass& obj) {
std::cout << "Copy constructor" << std::endl;
}
};
int main() {
MyClass obj1; // 调用默认构造函数
MyClass obj2(10); // 调用带一个参数的构造函数
MyClass obj3(10, 20); // 调用带两个参数的构造函数
MyClass obj4 = obj1; // 调用拷贝构造函数
return 0;
}
```
在上面的代码中,我们定义了一个名为 MyClass 的类,并同时定义了默认构造函数、带参数的构造函数、拷贝构造函数,然后在主函数中创建了四个 MyClass 类的对象,并分别调用了不同的构造函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)