【发布时间】:2013-01-23 03:09:07
【问题描述】:
如果我声明一个类,(没有动态内存分配,没有指针):
class A{
int a,b;
public:
A();
A(int,int);
A& operator=(const A);
};
不声明复制构造函数是否安全?默认的复制构造函数是什么样子的?
A& A::operator=(const A other)
{
a=other.a;
b=other.b;
return *this;
}
即使我不声明复制构造函数,当我调用 operator=()
时也会调用默认的构造函数编辑:
默认的析构函数是:
A::~A(){}
所以这里不需要
【问题讨论】:
-
您是否将 copy-constructor 与 copy-assignment 运算符混淆了?
-
不,复制赋值操作符是operator=(),复制构造函数是A::A(A&);
-
我明白了,当需要一个副本作为
otheroperator=的参数时,会调用复制构造函数 -
你可能想要
A& operator=(const& A);而不是A& operator=(const A);,它们是非常不同的东西。
标签: c++ operator-overloading copy-constructor