gpt4 book ai didi

c++ - 我应该在 C++ 中的什么地方实现 operator =

转载 作者:太空狗 更新时间:2023-10-29 20:04:47 26 4
gpt4 key购买 nike

我有一个与 C++ 中 = 运算符的实现相关的问题。如果我没记错的话,在一个类中实现=有两种方式:一种是显式重载=,例如:

class ABC
{
public:
int a;
int b;
ABC& operator = (const ABC &other)
{
this->a = other.a;
this->b = other.b;
}
}

另一种是隐式定义=。例如:

   class ABC
{
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
}

我的问题如下:

1)=是否需要显式和隐式实现?2)如果只需要其中一个,首选哪个实现?

谢谢!

最佳答案

首先显示的是赋值运算符,第二个是复制构造函数。它们是做不同事情的不同功能。 (即 ctor 设置一个正在诞生的对象,并且 op= 更改现有对象的状态以匹配另一个对象的状态。)

幸运的是(在设计的帮助下)你没有实现它们中的任何一个,而是让语言来创建它们。如果您使用明智的成员和基类,它就会发生。

如果您需要实现它们(检查两次确实如此!)您可能需要它们,请参阅 Rule of 3

关于c++ - 我应该在 C++ 中的什么地方实现 operator =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944127/

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