目錄
什麼是多型性
乙個典型的例子
利用虛函式實現動態多型性
虛函式的作用
靜態關聯和動態關聯
什麼情況下應當宣告虛函式
虛析構函式
純虛函式與抽象類
純虛函式
抽象類乙個綜合的例子
向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為(即方法)
從系統實現的角度來看,總共分為兩類:靜態多型性和動態多型性
靜態多型性:函式過載,運算子過載(實質上也是函式過載)
動態多型性:不在編譯時確定呼叫哪個函式,而是在程式執行過程中才動態地確定操作所針對的物件
//point 宣告檔案
using namespace std;
class point
;//point 實現檔案
#include#include"point.h"
using namespace std;
//float x,y;
point::point(float a,float b):x(a),y(b){}
void point::setpoint(float a,float b)
float point::getx() const
float point::gety() const
ostream &operator<<(ostream& output,const point& point)
;void circle::setradius(float r)
float circle::getradius() const
float circle::area() const
ostream &operator<<( ostream& output,const circle& circle)
;void cylinder::setheight(float h)
float cylinder::getheight() const
float cylinder::area() const
float cylinder::volume() const
ostream& operator <<(ostream& output,const cylinder& cylinder )
virtual float volume() const
virtual void shapename() const = 0;
virtual ~shape()
void point::setpoint(float a,float b)
float point::getx() const
float point::gety() const
ostream &operator<<(ostream& output,const point& point)
;void circle::setradius(float r)
float circle::getradius() const
ostream &operator<<( ostream& output,const circle& circle)
void circle::shapename() const
;void cylinder::setheight(float h)
float cylinder::getheight() const
ostream& operator <<(ostream& output,const cylinder& cylinder )
float cylinder::volume() const
void cylinder::shapename() const
{ cout<<"class cylinder"<#include"cylinder.h"
using namespace std;
int main()
{ float x = 3;
float y = 5;
float radius = 8;
float height = 10;
class shape *ptr = new point(x,y);
ptr->shapename();
cout
多型性和虛函式
11.27 多型指的是同樣的資訊被不同型別的物件接收導致不同的行為,包括 靜態多型性和動態多型性。靜態多型性包括 函式過載和運算子過載 動態多型主要 由虛函式實現。虛函式宣告 virsual 型別說明符 函式名 參數列 純虛函式 virtual 函式型別 函式名 參數列 0 在派生類中定義 抽象類 ...
多型性和虛函式
多型性是物件導向程式設計的乙個重要特徵。c 支援多型性,在 c 程式設計中能夠實現多型性。1 乙個典型的例子 先建立乙個 point 點 類,包含資料成員x,y 座標點 以他為基類,派生出乙個 circle 圓 類,增減資料成員 r 半徑 再以 circle 類為直接基類,派生出乙個 cylinde...
多型性和虛函式
1 向上型別轉換 取乙個物件的位址並將其作為基類的物件來使用 2 函式體和函式呼叫相聯絡稱為 遭 在程式執行之前 晚 在程式執行時 3 虛函式 為了引起晚 需要在基類使用vitual修飾函式 4 c 如何實現晚 vtable 編譯器放置特定的虛函式位址 在每個虛函式類中,編譯器秘密的放置乙個指標。指...