天天看點

[008]C/C++系列 | const member function(常量成員函數)

class complex
{
public:
    complex (double r = 0, double i = 0)
        : re (r), im (i)  // 初始化進階用法
    { }
    complex& operator += (const complex&);
    double real () const { return re; }
    double imag () const { return im; }
private:
    double re, im;
    friend complex& __doapl (complex*, const complex&);
};
           

什麼時候用const 呢?

例如:

double real () const { return re; }
double imag () const { return im; }
           

class 裡面的函數會分:

  • 會改變資料内容
  • 不會改變資料内容
不會改變内容的,馬上可以加上const!!!

注意事項:

{
    complex c1(2,1);
    cout<<c1.real();
    cout<<c1.imag();
}  
// 可以!!!
           
{
    const complex c1(2,1);
    cout<<c1.real();
    cout<<c1.imag();
}
// 不一定可以!!!
           

為什麼下面不一定可以呢?!!!

當上面class沒有加const的時候,會報錯!!!

因為const complex c1(2,1); 說不可以改變,而class裡面函數real、imag(沒加const)卻說可以改變,産生了沖突!!!

繼續閱讀