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

C++之------運算符重載

編輯:C++入門知識

C++之------運算符重載


①  什麼是運算符重載?            何為C++的運算符重載呢?   其實就是運算符給它重新賦予新的含義或者多重含義。讓它有另外一種新的功能。            為什麼需要運算符重載?   面向對象中為了實現類的多態性,我們就引用了運算符重載       程序中可以利用“+”、“—” 對整數、單精度、雙精度以及指針進行加法和減法運算等   例如:   1 int a = 1+2; //對整數加 2 double d = 1.0+2.54; //對雙精度加 3 int por[10]; 4 int *p = por; 5 p = p- 1; //對指針減1     ②運算符重載由來                 在計算機的內存中,整數與浮點數的存儲形式是不一樣的,計算機他們的加減運算的處理過程是不同的,   而且指針-1並不是簡單的地址-1而已。在C++裡面,編譯器來處理這些問題,它可以根據表達式兩側的類型來決   定應該如何處理他們的運算,最後決定該執行什麼操作。所以在C++中可以對運算符可以對不同類型進行運算操作。               現實中的問題:復數的運算-------          可能很多童鞋忘了什麼是復數.咋們先來說說什麼是復數(光谷的學到老活到老)       復數是指能寫成如下形式的數a+bi,這裡a和b是實數,i是虛數單位。在復數a+bi中,a稱為復數的實部,b稱   為復數的虛部,i稱為虛數單位。當虛部等於零時,這個復數就是實數;當虛部不等於零時,這個復數稱為虛數,復數的   實部如果等於零,則稱為純虛數。由上可知,復數集包含了實數集,並且是實數集的擴張。 復數是由意大利米蘭學者   卡當在十六世紀首次引入,經過達朗貝爾、棣莫弗、歐拉、高斯等人的工作,此概念逐漸為數學家所接受。(來自:百度百科)           好,來正題:   比如兩個復數:S1=(1+2i)  S2=(6+1.2i)   我們在數學裡面進行兩個復數相加S=S1+S2=(7+3.2i)  (實部與實部相加,虛部與虛部相加)   在C++裡面我們如何計算呢 ?   所有我們需要用到運算符的重載。        ③  程序中運算符重載格式       重載的運算符函數語法為:   重載運算符的函數一般格式如下:     <返回值類型># operator 運算符名稱 (形參表列)     {         // 對運算符的重載處理     }    operator為關鍵字,專門用於定義重載的運算符函數,#代表要被重載的運算符。如:   Complex operator + (const Complex& a, const Complex& b){ ...... } 該函數可以用來是是實現對兩個Complex對象的加,       比喻下面的例子   復制代碼  1 int main(){  2     Complex a(10, 7), b(3, 5);  3     Complex c= a + b;  4     Complex d = a - b;  5     Complex e = a + b - d;   6     cout << "c="; c.print_complex();  7     cout << "d="; d.print_complex();  8     cout << "e="; e.print_complex();  9     int x=100, y=200, z; 10     z = x + y; 11     cout <<  "z=" << z; 12 } 復制代碼 使用成員函數來重載Complex的+、-運算符操作   復制代碼  1 #include <iostream>  2 using namespace std;  3 class Complex {  4 private:  5     double rpart, ipart;  6 public:  7     Complex ( ) { rpart=ipart=0.0; }  8     Complex(double rp, double ip){  9         rpart=rp; ipart=ip; 10     } 11     Complex operator +(const Complex &c){ 12         Complex temp(rpart+c.rpart, ipart+c.ipart); 13         return temp; 14     } 15      16     Complex operator -(const Complex &c); 17     void print_complex() 18     { 19         cout<< "(" << rpart<<','<<ipart << "i)" <<endl; 20     } 21 }; 22 //類外實現operator –函數 23 Complex Complex::operator -(const Complex &c){ 24     Complex temp(rpart-c.rpart, ipart-c.ipart); 25     return temp; 26 }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved