C++函數(shù)(二元操作符重載的成員函數(shù))

字號:

c++教科書上會(huì)說,一般而言,將算術(shù)和關(guān)系操作符定義成非成員函數(shù)。可要是定義成成員函數(shù)怎么寫?
    以operator+為例。定義成非成員函數(shù)情況是:
    X operatoe+(const X& lref,const X& rref);
    那么定義成成員函數(shù)是否是這樣呢?
    class X {
    public:
    .....
    X operator+(const X& rref);
    .....
    };
    其實(shí)不對。成員函數(shù)第一個(gè)參數(shù)的地址是this指針,是X *const this,這是一個(gè)指向非常量的指針。跟非成員函數(shù)版本并不一樣。考試.大提示這樣定義,函數(shù)的第一個(gè)參數(shù)在使用時(shí),就不能是常量對象和臨時(shí)對象了。為了跟非成員函數(shù)對應(yīng),應(yīng)該定義成:
    X operator+(const X& rref) const;
    這樣,第一個(gè)參數(shù)的常量性就得到保留,這個(gè)時(shí)候的this是 const X* const this。