对于拷贝构造来说,归根结底,落脚点在构造函数上。所以调用拷贝构造函数的时候,一定是这个对象不存在的时候,比如下面这句
A a =A(10)
那么,a是不存在的,而且是通过其它的A对象构造出来的,那么则调用的是拷贝构造函数。如果是
A a(1);
a = A(10);
那么这里就调用的是赋值操作符,因为a是已经存在的对象了,不需要构造了。
那么,接下来再讨论一下拷贝构造的优化问题。如果有以下代码:
代码 1:
#include <iostream>
using namespace std;
static int i=0;
class A {
public:
A(){
cout<<"A::A()"<<endl;
}
~A(){
cout<<"A::~A()"<<endl;
}
A(const A& o){
i++;
cout<<"A::A(const A& 0)"<<endl;
}
private:
in