gpt4 book ai didi

c++ - C++中的赋值运算符重载

转载 作者:IT老高 更新时间:2023-10-28 12:39:36 25 4
gpt4 key购买 nike

我使用以下代码进行赋值运算符重载:

SimpleCircle SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}

我的复制构造函数是这样的:

SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
itsRadius = rhs.getRadius();
}

在上面的运算符重载代码中,复制构造函数被调用,因为正在创建一个新对象;因此我使用了以下代码:

SimpleCircle & SimpleCircle::operator=(const SimpleCircle & rhs)
{
if(this == &rhs)
return *this;
itsRadius = rhs.getRadius();
return *this;
}

它工作得很好并且避免了复制构造函数问题,但是关于这个(对我来说)有什么未知的问题吗?

最佳答案

赋值运算符的第二个版本没有问题。事实上,这是赋值运算符的标准方式。

编辑:请注意,我指的是赋值运算符的返回类型,而不是实现本身。正如评论中所指出的,实现本身是另一个问题。见 here .

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

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