生活随笔
收集整理的這篇文章主要介紹了
多态性-运算符重载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.問題引入
運算符重載是指對已有的運算符賦予多重含義。
必要性:
C++中預定義的運算符其運算對象只能是基本數據類型,而不適合用戶自定義的類型(如類類型)。
實現機制:
將指定的運算表達式轉化為對運算符函數的調用,運用對象轉化為運算符函數的實參。編譯器對重載運算符的選擇,遵循函數重載的選擇機制。
規則與限制:
可以重載C++中除下列(. ? .* ? :: ? ?:)運算符外的所有運算符
只能重載C++語言中已有的運算符,不可以臆造新的運算符
不改變原運算符的優先級和結合性,也不能改變操作數的個數
經重載的運算符,其操作數中至少應該有一個是自定義類型
2.運算符重載格式
函數類型 ?operator運算符 ?(形參)
{ ……}
強調:在這里,我們僅僅研究重載為類成員函數的情況,形式參數個數=原操作數個數-1(后置++、--除外)
3.復數運算實驗("+" "-"重載)
#include<iostream>
using namespace std;class complex{
public:complex(){ cout<<"Default Constructor is Called!"<<endl; }complex( double r , double i ){real = r; imag = i;cout<<"Parameter Constructor is Called!"<<endl;}complex(complex &c) { real = c.real; imag = c.imag;cout<<"Copy Constructor is Called!"<<endl; }~complex(){ cout<<"Destructor is Called!"<<endl; }complex operator+ (complex c1); //聲明“+”重載為成員函數complex operator- (complex c1); //聲明“-”重載為成員函數void display();
private:double real;double imag;
};
/
complex complex::operator+ (complex c2)
{complex c;c.real = c2.real + real;c.imag = c2.imag + imag;return complex(c.real,c.imag);
}
complex complex::operator- (complex c2)
{complex c;c.real = real - c2.real;c.imag = imag - c2.imag;return complex(c.real,c.imag);
}
void complex::display()
{cout<<"( "<<real<<" , "<<imag<<" )"<<endl;
}
/
int main()
{complex c1(5,4),c2(2,10),c3;cout<<"c1= "; c1.display();cout<<"c2= "; c2.display();cout<<"****************"<<endl;c3 = c1+c2;cout<<"c3=c1+c2= "; c3.display();cout<<"****************"<<endl;c3 = c1-c2;cout<<"c3=c1-c2= "; c3.display();cout<<"****************"<<endl;return 0;
}結果及分析:
總結
以上是生活随笔為你收集整理的多态性-运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。