c++重載運算符 重載運算符前置與后置的區(qū)別,求詳細(xì)介紹?
重載運算符前置與后置的區(qū)別,求詳細(xì)介紹?這里我們只討論作為成員函數(shù)重載的情況。假設(shè)類A的重載函數(shù)是預(yù)加載和后加載的,重載函數(shù)的一般形式應(yīng)該如下:classA& classA::operator(
重載運算符前置與后置的區(qū)別,求詳細(xì)介紹?
這里我們只討論作為成員函數(shù)重載的情況。假設(shè)類A的重載函數(shù)是預(yù)加載和后加載的,重載函數(shù)的一般形式應(yīng)該如下:classA& classA::operator()//預(yù)加載{itsval return*this}constClassAClassa::operator(int)//后加載{classatemp(*this)itsval有幾個方面可以研究:1>要區(qū)分前置運算符和后置運算符,需要將參數(shù)“int”添加到后置運算符重載函數(shù)中,盡管此類型除了顯示差異外不表示任何實際意義;
2>前置運算符返回變量引用,后置運算符返回常量。所以C是合法的,但C不是,這可以通過使用VC6.0和DEVC中的基本數(shù)據(jù)類型操作來驗證;
3>為什么不讓C合法呢?如果要實現(xiàn)C方法,必須使后置返回變量或變量引用。C首先返回C的值,然后返回1,因此不可能返回C,因此我們只能創(chuàng)建一個局部變量來保存C的初始值,然后返回局部變量(局部變量不允許返回引用)。但是,在返回局部變量后,如果進(jìn)行下一步操作,則局部變量的值將被卷入操作中,因此此時,C實際上等價于C沒有存在的意義。