成员职能的任何理由"真实" " imag"在std :: complex类中不是const?
答案 0 :(得分:2)
real
类模板中complex
有两个重载:
T real() const;
void real(T);
上的第一个 const
,因此无法满足您的要求。
第二个,它采用T
参数并且不返回任何内容,不是const
,因为它是一个" setter"方法 - 它的全部要点是改变对象的状态,所以最好不要const
。
答案 1 :(得分:1)
让我们看一下C ++标准:
C ++ 2011第26.4.2节“类模板复杂”
namespace std { template<class T> class complex { public: typedef T value_type; complex(const T& re = T(), const T& im = T()); complex(const complex&); template<class X> complex(const complex<X>&); T real() const; void real(T); T imag() const; void imag(T); complex<T>& operator= (const T&); complex<T>& operator+=(const T&); complex<T>& operator-=(const T&); complex<T>& operator*=(const T&); complex<T>& operator/=(const T&); complex& operator=(const complex&); template<class X> complex<T>& operator= (const complex<X>&); template<class X> complex<T>& operator+=(const complex<X>&); template<class X> complex<T>& operator-=(const complex<X>&); template<class X> complex<T>& operator*=(const complex<X>&); template<class X> complex<T>& operator/=(const complex<X>&); }; }
我说它非常清楚地表明std::complex::real()
和std::complex::imag()
是const方法。