【发布时间】:2011-08-02 06:54:03
【问题描述】:
编译器生成的赋值运算符是否防止自赋值?
class T {
int x;
public:
T(int X = 0): x(X) {}
};
int main()
{
T a(1);
a = a;
}
即使类成员不是指针类型,我是否总是需要防止自赋值?
【问题讨论】:
-
不,这没有什么问题。而且我认为没有什么可以“防范”,真的。编辑:您是在谈论复制构造函数吗?
-
如果没有类成员是指针/智能类型,那么答案是否定的。无需防范它。在这种情况下,行为与 POD(普通旧数据)相同......