copy构造与copy复制

“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;
}

posted @ 2014-09-30 11:07  田田超人  阅读(200)  评论(0编辑  收藏  举报