赋值和拷贝构造函数
有程序:
1 #include <iostream> 2 3 using namespace std; 4 5 class ClassA 6 { 7 public: 8 ClassA(int i = 0) {x = i;} 9 ClassA(const ClassA& t) 10 { 11 x = t.x; 12 cout << "调用拷贝构造函数" << endl; 13 } 14 ClassA& operator = (const ClassA& t) 15 { 16 cout << "调用赋值函数" << endl; 17 if(this != &t) x = t.x; 18 return *this; 19 } 20 private: 21 int x; 22 }; 23 24 int main() 25 { 26 ClassA ca(1); 27 ClassA cb; 28 cb = ca; //(1) 29 ClassA cc = ca; //(2) 30 return 0; 31 }
运行结果:
调用赋值函数
调用拷贝构造函数
语句(1)处使用赋值运算,但是(2)使用的是初始化而非赋值,C++规定创建对象时必须进行初始化,而拷贝构造函数和构造函数用以进行对象的初始化,这里使用一个对象给另一个对象进行初始化,调用拷贝构造函数。