虛函式與抽象基類的應用

2021-06-23 08:08:21 字數 1291 閱讀 1209

#include using namespace std;

//宣告抽象基類shape

class shape

//虛函式

virtual float volume() const //虛函式

virtual void shapename() const = 0;//純虛函式

};//宣告point類

class point:public shape//point是shape的公用派生類

//設定點的x座標

float gety() const //設定點的y座標

virtual void shapename() const //對虛函式進行再定義

friend ostream & operator << (ostream &, const point &);//運算子過載

protected:

float x,y;

};//定義point類成員函式

point::point(float a,float b)

void point::setpoint(float a,float b)

ostream & operator << (ostream &output,const point &p)

#include using namespace std;

//宣告抽象基類shape

class shape

//虛函式

virtual float volume() const //虛函式

virtual void shapename() const = 0;//純虛函式

};//宣告point類

class point:public shape//point是shape的公用派生類

//設定點的x座標

float gety() const //設定點的y座標

virtual void shapename() const //對虛函式進行再定義

friend ostream & operator << (ostream &, const point &);//運算子過載

protected:

float x,y;

};//定義point類成員函式

point::point(float a,float b)

void point::setpoint(float a,float b)

ostream & operator << (ostream &output,const point &p)

虛函式與抽象基類

當某個虛函式通過指標或者引用呼叫時,編譯器產生的 直到執行時才能確定應該呼叫哪個版本的函式,被呼叫的函式是與繫結到指標或引用上的物件的動態型別相匹配的那個。必須注意的是,動態繫結只有當我們通過指標或引用呼叫虛函式時才會發生。如果通過普通的型別 非引用非指標 的表示式呼叫虛函式時,編譯器就會將呼叫的版...

純虛函式與抽象基類

純虛函式 c 中可以定義這樣一類函式,這樣的函式可以沒有實現。我們把這樣的函式稱為純虛函式。純虛函式有什麼意義 通過它可以指明乙個虛函式只是提供了乙個可被子型別改寫的介面。純虛函式是在基類中宣告的虛函式,它可以在基類中有定義,而且派生類必須定義自己的實現方法。基類不能生成物件,可以使用指標或者引用派...

虛函式 虛基類 抽象類

一 虛基類 解決二義性,防止雙份拷貝間接基類。否則得用作用域分辨符來區分進行的多個拷貝 將共同基類設定為虛函式,這是從不同的路徑繼承過來的同名資料成員在記憶體中就只有乙個拷貝,同乙個函式名也只有乙個對映。虛基類的宣告是在派生類的定義過程中進行的,語法形式為 class 派生類名 virtual繼承方...