程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中的運算符重載函數基礎及其值返回狀態

C++中的運算符重載函數基礎及其值返回狀態

編輯:C++入門知識

       運算符重載是C++的重要組成部分,它可以讓程序更加的簡單易懂,簡單的運算符使用可以使復雜函數的理解更直觀。

對於普通對象來說我們很自然的會頻繁使用算數運算符讓他們參與計算,但是對於自定義類的對象來說,我們是無論如何也不能阻止寫出像下面的代碼一樣的程序來的。

例子如下:

 C++ 代碼  class Test 

    //過程省略 

 
int main() 

    Test a,c; 
    c=a+a; 
}



當然這樣的代碼是不能夠通過編譯的,c++對自定類的算術運算部分保留給了程序員,這也是符合c++靈活特性的。
在c++中要想實現這樣的運算就必須自定義運算符重載函數,讓它來完整具體工作。
在這裡要提醒讀者的是,自定義類的運算符重載函數也是函數,你重載的一切運算符不會因為是你自己定義的就改變其運算的優先級,自定義運算符的運算優先級同樣遵循與內部運算符一樣的順序。
除此之外,c++也規定了一些運算符不能夠自定義重載,例如.、::等等。 


上表是在C++中允許重載的運算符總表

下面我們來學習如何重載運算符,運算符重載函數的形式是:

返回類型 operator 運算符符號 (參數說明)
{
//函數體的內部實現
}

運算符重載函數的使用主要分為兩種形式,一種是作為類的友元函數進行使用另一種則是作為類的成員函數進行使用

下面我們先看一下作為類的友元函數使用的例子:

 C++ 代碼   
//程序作者:管寧     
//站點:www.cndev-lab.com     
//所有稿件均有版權,如要轉載,請務必著名出處和作者    
 
#include <iostream> 
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)//+運算符重載函數 

    //cout<<temp1.a<<"|"<<temp2.a<<endl;//在這裡可以觀察傳遞過來的引用對象的成員分量 
    Test result(temp1.a+temp2.a); 
    return result; 

Test& operator ++(Test& temp)//++運算符重載函數 

    temp.a++; 
    return temp; 

int main() 

    Test a(100); 
    Test c=a+a; 
    cout<<c.a<<endl; 
    c++; 
    cout<<c.a<<endl; 
    system("pause"); 
}



在例子中,我們對於自定義類Test來說,重載了加運算符與自動遞增運算符,重載的運算符完成了同類型對象的加運算和遞增運算過程。

重載運算符函數返回類型和形式參數也是根據需要量進行調整的,下面我們來看一下修改後的加運算符重載函數。

代碼如下:

 C++ 代碼   
//程序作者:管寧     
//站點:www.cndev-lab.com     
//所有稿件均有版權,如要轉載,請務必著名出處和作者    
 
#include <iostream> 
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)//+運算符重載函數 

    Test result(temp1.a * temp2); 
    return result; 

int main() 

    Test a(100); 
    Test c = a + 10; 
    cout<<c.a<<endl; 
    syste
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved