挑戰(zhàn)30天C++入門極限:C++中的運算符重載函數(shù)基礎及其值返回狀態(tài)

字號:

運算符重載是C++的重要組成部分,它可以讓程序更加的簡單易懂,簡單的運算符使用可以使復雜函數(shù)的理解更直觀。
    對于普通對象來說我們很自然的會頻繁使用算數(shù)運算符讓他們參與計算,但是對于自定義類的對象來說,我們是無論如何也不能阻止寫出像下面的代碼一樣的程序來的。
    例子如下:
    C++ 代碼 class Test
    {
     //過程省略
    }
    int main()
    {
     Test a,c;
     c=a+a;
    }
    當然這樣的代碼是不能夠通過編譯的,c++對自定類的算術運算部分保留給了程序員,這也是符合c++靈活特性的。
    在c++中要想實現(xiàn)這樣的運算就必須自定義運算符重載函數(shù),讓它來完整具體工作。
    在這里要提醒讀者的是,自定義類的運算符重載函數(shù)也是函數(shù),你重載的一切運算符不會因為是你自己定義的就改變其運算的優(yōu)先級,自定義運算符的運算優(yōu)先級同樣遵循與內部運算符一樣的順序。
    除此之外,c++也規(guī)定了一些運算符不能夠自定義重載,例如.、::等等?!?BR>    上表是在C++中允許重載的運算符總表
    下面我們來學習如何重載運算符,運算符重載函數(shù)的形式是:
    返回類型 operator 運算符符號 (參數(shù)說明)
    {
    //函數(shù)體的內部實現(xiàn)
    }
    運算符重載函數(shù)的使用主要分為兩種形式,一種是作為類的友元函數(shù)進行使用,另一種則是作為類的成員函數(shù)進行使用。
    下面我們先看一下作為類的友元函數(shù)使用的例子:
    C++ 代碼
    //程序作者:管寧
    //站點:www.cndev-lab.com
    //所有稿件均有版權,如要轉載,請務必出處和作者
    #include
    using namespace std;
    class Test
    {
     public:
     Test(int a = 0)
     {
     Test::a = a;
     }
     friend Test operator +(Test&,Test&);
     friend Test& operator ++(Test&);
     public:
     int a;
    };
    Test operator +(Test& temp1,Test& temp2)//+運算符重載函數(shù)
    {
     //cout<     Test result(temp1.a+temp2.a);
     return result;
    }
    Test& operator ++(Test& temp)//++運算符重載函數(shù)
    {
     temp.a++;
     return temp;
    }
    int main()
    {
     Test a(100);
     Test c=a+a;
     cout<     c++;
     cout<     system("pause");
    }
    在例子中,我們對于自定義類Test來說,重載了加運算符與自動遞增運算符,重載的運算符完成了同類型對象的加運算和遞增運算過程。
    重載運算符函數(shù)返回類型和形式參數(shù)也是根據(jù)需要量進行調整的,下面我們來看一下修改后的加運算符重載函數(shù)。
    代碼如下:
    C++ 代碼
    //程序作者:管寧
    //站點:www.cndev-lab.com
    //所有稿件均有版權,如要轉載,請務必出處和作者
    #include
    using namespace std;
    class Test
    {
     public:
     Test(int a = 0)
     {
     Test::a = a;
     }
     friend Test operator +(Test&,const int&);
     public:
     int a;
    };
    Test operator +(Test& temp1,const int& temp2)//+運算符重載函數(shù)
    {
     Test result(temp1.a * temp2);
     return result;
    }
    int main()
    {
     Test a(100);
     Test c = a + 10;
     cout<     system("pause");
    }