1. 程式人生 > >多型總結

多型總結

1.定義 Ø 多型性( Polymorphism)是指一個名字,多種語義;或介面相同,多種實現。 Ø 過載函式是多型性的一種簡單形式。

Ø 虛擬函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。 2.虛擬函式 Ø  冠以關鍵字 virtual 的成員函式稱為虛擬函式 Ø 實現執行時多型的關鍵首先是要說明虛擬函式,另外,必須用

  基類指標呼叫派生類的不同實現版本 3. 虛擬函式和基類指標

基類指標雖然獲取派生類物件地址,卻只能訪問派生類從基類繼承的成員

#include<

iostream>

using namespace std ;

class  Base

{ public :       Base(char xx)  { x = xx; }

                      void who()  { cout << "Base class: "<< x << "\n" ; }

   protected:   char x;

} ;

class  First_d : public  Base

{ public :       First_d(char xx, char yy):Base(xx)  { y = yy; }

                     

void who()  { cout << "First derived class:"<< x << ", " << y << "\n" ; }

   protected:   char y;

} ;

4.注意:

Ø 一個虛擬函式,在派生類層介面相同的過載函式都保持虛特性 Ø 虛擬函式必須是類的成員函式 Ø 不能將友元說明為虛擬函式,但虛擬函式可以是另一個類的友元 Ø 解構函式可以是虛擬函式,但建構函式不能是虛擬函式
5.虛擬函式的過載特性 Ø在派生類中過載基類的虛擬函式要求函式名、返回型別、引數個數、

  引數型別和順序完全相同

Ø 如果僅僅返回型別不同,C++認為是錯誤過載 Ø 如果函式原型不同,僅函式名相同,丟失虛特性 6.純虛擬函式和抽象類

n 純虛擬函式是一種特殊的虛擬函式, n 在許多情況下,在基類中不能對虛擬函式給出有意義的實現,而把它宣告為純虛擬函式,它的實現留給該基類的派生類去做。 n 這就是純虛擬函式的作用。 Ø  純虛擬函式是一個在基類中說明的虛擬函式,在基類中沒有定義, 要求任何派生類都定義自己的版本 Ø  純虛擬函式為各派生類提供一個公共介面 Ø  純虛擬函式說明形式:

    virtual  型別  函式名引數表= 0;

Ø一個具有純虛擬函式的基類稱為抽象類。

7.

#include<iostream>

using namespace std;

#include"figure.h"

int main()

 { triangle t ;  //派生類物件

    square s ;    circle c;

    t.set_dim(10.0,5.0) ;

    t.show_area();

    s.set_dim(10.0,5.0) ;

    s.show_area() ;

    c.set_dim(9.0) ;

    c.show_area() ;

 }