gpt4 book ai didi

c++ - 用整数和 -Weffc++ 标志覆盖 +/-/*/%

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

我有一个名为 Coord 的类...它有实例数据 x、y。我想重写 * 运算符,以便 * 运算符可用于将 Coord 乘以整数或 double 值!这是我提出的解决方案:

Coord& Coord::operator*(int n)
{
this->x = this->x*n;
this->y = this->y*n;
return *this;
}

有效 - 我已经测试了 main 的一些打印输出...唯一的问题是...我从 -Weffc++ 标志收到警告!它说我的函数应该按值返回!我知道这个标志对应于“Effective C++”这本书,但我手头没有拷贝 - 这本书有什么建议?值传递是什么意思?

最佳答案

只是详细说明 Grizzly 的评论...这不是就地乘法。因此,您应该将其声明为 const 以明确防止:

Coord Coord::operator*(int n) const {
Coord c(*this);
c.x *= n;
c.y *= n;
return c;
}

或者如果你有一个有用的构造器:

Coord Coord::operator*(int n) const {
return Coord(x*n, y*n);
}

就地乘法不同(并且非常量):

Coord& Coord::operator*=(int n) {
x *= n;
y *= n;
return *this;
}

关于c++ - 用整数和 -Weffc++ 标志覆盖 +/-/*/%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12360370/

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