C 中多型性和過載

2021-08-21 04:17:36 字數 2435 閱讀 2863

c++中多型性和過載

物件導向的三大特徵:

1.封裝:保證物件自身資料的完整性、安全性

2.繼承:建立類之間的關係,實現**復用、方便系統的擴充套件

3.多型:相同的方法呼叫可實現不同的實現方式。多型是指兩個或多個屬於不同類的物件,對於同乙個訊息(方法呼叫)作出不同響應的方式。

、、、、、、、、、

實現多型的方式:

函式過載;運算子過載;虛函式

、、、、、、、、、

c++有兩種多型:

1.編譯時的多型:函式過載和運算子過載,在編譯時就決定呼叫哪個函式

2.執行時的多型:通過類繼承和虛函式實現的。

、、、、、、、、

函式過載包括:普通函式過載和成員函式過載。函式的引數個數、型別、順序不同

運算子過載:實現兩個物件的相加。

、、、、、、、、

當基類中的某個函式被定義為虛函式之後,該函式可以在乙個或多個派生類中重新定義,但其函式原型,包括返回值型別,引數個數,引數型別和引數順序都必須和基類中的一致。

多型性是物件導向程式設計的重要特徵之一。它與封裝性和繼承性共同構成了物件導向程式設計的三大特徵。封裝性是基礎 ,繼承性是關鍵 ,多型性是補充 ,多型性又存在於繼承的環境之中 ,所以這三大特徵是相互關聯的 ,相互補充的。c++ 語言中有兩種過載 :函式過載和運算子過載。運算子過載很重要 ,它的實質就是函式過載。我們接觸的還有另一種是指同樣的訊息被不同類的物件接受時產生完全不同的實現 ,該情況大多產生在多類繼承中不同類中的相同說明的成員函式的多型行為。

在函式過載中 ,同乙個函式名可對應若干種不同的實現 ,依據函式引數的型別、個數和順序來確定某個實現。在運算子過載中 ,同乙個運算子對應著很多種功能 ,這些功能是通過函式來定義的 ,依據運算元的型別來確定應選運算子的功能。

函式過載主要是針對不同引數型別,引數個數,引數順序的處理,處理型別的最好不用函式過載,可以用模板函式更簡便運算子過載是解決類的物件的運算,由operator定義多型性是用虛函式和類的繼承來實現的,通過基類的指標或引用呼叫派生類的物件他們各有各的功能。過載主要是指同乙個函式名擁有不一樣的參數列來實現多個功能,多型是用父類來操控不同的子類。

多型性是物件導向程式設計的乙個強大的功能,是其三大特性之一。

運算子過載和函式過載體現了物件導向技術的多型性。多型性機制不僅增加了物件導向軟體系統的靈活性,進一步減少了冗餘資訊,而且顯著提高了軟體的可重用性和可擴充性。從實現的角度來講,多型性可以劃分為兩類:編譯時的多型性和執行時的多型性。在c++語言中,編譯時的多型性主要是通過函式過載和運算子過載實現的

c++是物件導向的程式語言,引入了類操作的時候如果乙個類的兩個物件相加,如果你簡單的將其的每一項相加,這不又回到了面向過程了嗎,所以就要使兩個物件也能相加,所以這時候就要過載操作符。 乙個簡單的程式,用的過載運算子+,讓兩個物件相+,這就是物件導向的c++語言。

引數傳遞有傳值、傳址和引用三種

void f(int n){}//定義傳值方式

int a;

f(a);//呼叫傳值方式

void f(int *n){}//定義傳址方式

int a;

f(&a);//呼叫傳址方式

void f(int &n){}//定義引用方式

int a;

f(a);//呼叫引用方式

傳值方式適合一般數值傳送,並且不改變原資料,但要消耗記憶體空間

傳址方式適合傳遞陣列、指標,由於傳遞的是位址,所以直接操作會改變原資料

引用方式和指標比較類似,是相對比較新的一種方式,一般情況下能用傳址的就能用引用,而且用引用更方便一點。

要體現物件導向的多型性不是傳遞方式的原因,是函式過載。

即同一函式名可以定義不同的副本,在對不同呼叫時有不同的反應

如:void f(){}//不帶引數

void f(int a){}//帶乙個整形引數

void f(int a,int b)//帶兩個整形引數

void f(double a){}//帶乙個double型引數

void f(char a){}//帶乙個字元型引數

以下依次對它們呼叫:

f();

int a;

f(a);

int a1,a2;

f(a1,a2);

double b;

f(b);

char c;

f(c);

區別函式過載可以是

引數型別(整形、實型、字元型等)

引數個數

但不能是返回型別,如:

int f(){}

double f(){}

這樣是不行的,編譯要出錯。

c++中多型性和過載

c 多型性,多型,和過載

多型性分兩個部分 1.靜態多型性 通過過載實現,同名不同參。2.動態多型性 多型,子類覆蓋父類方法,執行時根據指標的型別來決定最終執行的方法。即 虛函式。過載是同名不同參,引數完全一樣順序不同也叫同名不同參。參考 在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的...

多型性和過載Overload

1 覆蓋和過載有什麼不同?答 虛函式總是在派生類中被改寫,這種改寫稱為override 覆蓋 override 是指派生類重寫基類的虛函式。重寫的函式必須有一致的參數列和返回值 c 標準允許返回值不同的情況,但是很少有編譯器支援這個特性 overload 約定成俗地被翻譯成過載,是指編寫乙個與已有函...

C 中的多型性

首先理解一下什麼叫多型。同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。多型性通過派生類覆寫基類中的虛函式型方法來實現。多型性分為兩種,一種是編譯時的多型性,一種是執行時的多型性。編譯時的多型性 編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳...