gpt4 book ai didi

c++ - 赋值运算符 - 自赋值

转载 作者:IT老高 更新时间:2023-10-28 22:59:33 26 4
gpt4 key购买 nike

编译器生成的赋值运算符是否防止自赋值?

class T {

int x;
public:
T(int X = 0): x(X) {}
};

int main()
{
T a(1);
a = a;
}

即使类成员不是指针类型,我是否总是需要防止自赋值?

最佳答案

Does the compiler generated assignment operator guard against self assignment?

不,它没有。它仅执行成员方式的复制,其中每个成员都由其自己的赋值运算符(也可能是程序员声明的或编译器生成的)进行复制。

Do I always need to protect against self-assignment even when the class members aren't of pointer type?

不,如果你的所有类的属性(以及它们的属性)都是POD-types,你不会这样做。 .

在编写您自己的赋值运算符时,如果您希望自己的类在未来得到验证,您可能希望检查自赋值,即使它们不包含任何指针,等等。也可以考虑 the copy-and-swap idiom .

关于c++ - 赋值运算符 - 自赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com