“copy构造”与“copy复制”误区:----“=”语法也可以用来调用copy构造函数:
如:Constr object3 = object1;
区别在于:如果定义一个新的对象(如Constr object3),一定会有个构造函数被调用,不可能调用复制操作。
如果没有新对象被定义(如object1 = object2;),不会有构造函数被调用,你们当然是“copy复制”操作被调用!
示例代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Constr
{
public:
Constr()
{
cout << "Constr()" << endl;
}
Constr(const Constr& con)
{
cout << "Constr(const Constr& con)" << endl;
}
Constr& operator = (const Constr& con)
{
cout << "Constr& operator = (const Constr& con)" << endl;
return *this;
}
};
int main()
{
Constr object1;
Constr object2(object1);
object1 = object2;
Constr object3 = object1;
return 0;
}
时间: 2024-10-07 18:14:26