我在MSVC中找到Complex的operator +返回非const 复杂
_TMPLT(_Ty) inline
_CMPLX(_Ty) operator+(const _Ty& _Left,
const _CMPLX(_Ty)& _Right)
{ // add complex to real
_CMPLX(_Ty) _Tmp(_Left);
return (_Tmp += _Right);
}
此外,在cppreference中,它也是非常量
template< class T >
complex<T> operator+( const complex<T>& lhs, const complex<T>& rhs);
(1)
template< class T >
complex<T> operator+( const complex<T>& lhs, const T& rhs);
(2)
template< class T >
complex<T> operator+( const T& lhs, const complex<T>& rhs);
(3)
template< class T >
complex<T> operator-( const complex<T>& lhs, const complex<T>& rhs);
(4)
template< class T >
complex<T> operator-( const complex<T>& lhs, const T& rhs);
(5)
template< class T >
complex<T> operator-( const T& lhs, const complex<T>& rhs);
(6)
template< class T >
complex<T> operator*( const complex<T>& lhs, const complex<T>& rhs);
(7)
template< class T >
complex<T> operator*( const complex<T>& lhs, const T& rhs);
(8)
template< class T >
complex<T> operator*( const T& lhs, const complex<T>& rhs);
(9)
template< class T >
complex<T> operator/( const complex<T>& lhs, const complex<T>& rhs);
(10)
template< class T >
complex<T> operator/( const complex<T>& lhs, const T& rhs);
(11)
template< class T >
complex<T> operator/( const T& lhs, const complex<T>& rhs);
然后有人认为它应该是 const 。
但是,我想不出这种导致非常规必要性的情况。
有人能告诉我这种情况吗?感谢
答案 0 :(得分:2)
你误解了你所关联的问题和答案。
答案没有说明函数的返回值。答案讨论传递给函数的参数,并正确地建议参数作为常量引用和常量指针传递如果该函数不改变这些参数强>
const
。没有理由operator + (const T& a , const T& b)
返回const对象,这样做可能会阻止重要的优化。