gpt4 book ai didi

c++ - 为什么 Vector3D 类中的同一个操作有两种不同类型的运算符重载?

转载 作者:行者123 更新时间:2023-11-30 03:43:47 25 4
gpt4 key购买 nike

我在审查某人的代码时想出了两个有趣的运算符重载方法。我不完全清楚为什么编码人员必须对第二种方法进行编码。

首先:

inline Vector3D operator-(const Vector3D &a, const Vector3D &b) {
return Vector3D(a.getX() - b.getX(), a.getY() - b.getY(), a.getZ() - b.getZ());
}

第二:

inline Vector3D operator-(const Vector3D &a) {
return Vector3D(-a.getX(), -a.getY(), -a.getZ());
}

我明白第一种方法在这里做什么,但是第二种方法有必要吗?如果是,它有什么作用?

最佳答案

第二个是一元运算符。它允许您取反 vector ,将其反射到原点到相反的八分圆。

如果我们猜测类有合理的构造函数和拷贝构造函数,那么:

Vector3D v( 1,1,1 );
Vector3D negatedV = -v;

关于c++ - 为什么 Vector3D 类中的同一个操作有两种不同类型的运算符重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880932/

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