C++赋值构造
时间: 2023-07-11 07:03:47 浏览: 46
C++中的赋值构造函数是一个特殊的构造函数,它用于在对象已经被创建后再次给对象赋值。赋值构造函数的定义如下:
```c++
class ClassName {
public:
ClassName(); // 默认构造函数
ClassName(const ClassName& obj); // 拷贝构造函数
ClassName& operator=(const ClassName& obj); // 赋值构造函数
};
```
赋值构造函数的参数是一个常引用,表示要赋值的对象。它的返回值是一个引用,表示返回被赋值后的对象本身。
赋值构造函数的作用是当一个已经存在的对象需要被赋值时,可以使用赋值构造函数来完成赋值。赋值构造函数在以下情况会被调用:
1. 使用一个对象初始化另一个对象。
2. 将一个对象作为实参传递给函数,函数的形参是该对象的引用。
3. 从函数中返回一个对象,函数的返回值是该对象的引用。
下面是一个简单的例子,演示了如何使用赋值构造函数:
```c++
#include <iostream>
using namespace std;
class MyClass {
public:
int x;
MyClass() {
cout << "默认构造函数被调用" << endl;
}
MyClass(const MyClass& obj) {
x = obj.x;
cout << "拷贝构造函数被调用" << endl;
}
MyClass& operator=(const MyClass& obj) {
x = obj.x;
cout << "赋值构造函数被调用" << endl;
return *this;
}
};
int main() {
MyClass obj1;
obj1.x = 10;
MyClass obj2 = obj1; // 使用对象初始化另一个对象
cout << "obj2.x = " << obj2.x << endl;
MyClass obj3;
obj3 = obj1; // 赋值操作
cout << "obj3.x = " << obj3.x << endl;
return 0;
}
```
输出结果为:
```
默认构造函数被调用
拷贝构造函数被调用
obj2.x = 10
默认构造函数被调用
赋值构造函数被调用
obj3.x = 10
```