所以..我写一些代码,想知道原型的复合运算符(即类似operator*=或operator/=).当我查看它时,我意识到它们应该返回引用.(或者至少我的消息来源表示如下:R& operator +=(K& a, S b);.)嗯..然后我意识到我的代码中的一行可能比它看起来更危险:
// I have a really fancy Vector class I've been making. :P
template<typename T, int N>
inline Vector<T, N> operator*(const Vector<T, N>& vec, T scale) {
Vector<T, N> ret = vec;
return ret *= scale;
}
Run Code Online (Sandbox Code Playgroud)
所以..我想知道这是否无害......或者会导致对局部变量的引用泄漏并导致各种未定义的行为和一般的破坏.(我倾向于破坏,因此,重写如下.:P)
// I have a really fancy Vector class I've been making. :P
template<typename T, int N>
inline Vector<T, N> operator*(const Vector<T, N>& vec, T scale) {
Vector<T, N> ret = vec; …Run Code Online (Sandbox Code Playgroud)