c++中有构造函数/拷贝构造函数吗
时间: 2023-08-01 07:12:03 浏览: 126
运行结果-析构函数和拷贝构造函数
在C++中,每个类都有构造函数和析构函数。构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的状态。析构函数是类的一个成员函数,用于在对象被销毁时释放资源。
C++中也有拷贝构造函数。拷贝构造函数是一种特殊的构造函数,用于创建一个新对象并将其初始化为另一个对象的副本。拷贝构造函数通常用于对象的值传递和返回值,以及对象的拷贝和赋值操作。
下面是一个示例代码,展示了如何定义和使用拷贝构造函数:
```
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
int y;
public:
// 构造函数
MyClass(int x, int y) {
this->x = x;
this->y = y;
}
// 拷贝构造函数
MyClass(const MyClass& obj) {
this->x = obj.x;
this->y = obj.y;
}
int getX() {
return x;
}
int getY() {
return y;
}
};
int main() {
MyClass obj1(10, 20);
MyClass obj2 = obj1; // 使用拷贝构造函数进行对象的拷贝
cout << obj1.getX() << endl; // 输出:10
cout << obj2.getX() << endl; // 输出:10
obj1.setX(30);
cout << obj1.getX() << endl; // 输出:30
cout << obj2.getX() << endl; // 输出:10
return 0;
}
```
在上面的示例代码中,我们首先定义了一个 MyClass 类,包含了一个构造函数和一个拷贝构造函数。然后,我们创建了两个 MyClass 对象 obj1 和 obj2,其中 obj2 是通过 obj1 的拷贝构造函数创建的。最后,我们修改了 obj1 的 x 属性,发现 obj2 的 x 属性并未受到影响,说明 obj1 和 obj2 是独立的两个对象。
阅读全文