gpt4 book ai didi

c++ - 关于 C++ 库中 Complex 的实现的问题?

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

我在 MSVC 中找到 Complex 的 operator+ 返回 non-const 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 , 它也是非常量

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 引用传递
  • 如果该函数不改变调用它的对象,则该函数应声明为 const

没有理由让 operator + (const T& a , const T& b) 返回 const 对象,这样做可能会阻止重要的优化。

关于c++ - 关于 C++ 库中 Complex 的实现的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728749/

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