1
我發現複雜的運營商+中MSVC返回非const複雜有關在C++庫中實現Complex的問題?
_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,它也是非const
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。
但是,我不能想到這種情況導致非const的必要性。
有人可以告訴我這樣的情況嗎?謝謝
爲什麼*應該*爲const?換句話說,爲什麼'int + int'返回'const int'? – CoryKramer
切勿將代碼張貼爲截圖。 – dandan78
@ dandan78我編輯了截圖。謝謝! – czxyl