函式的多型性以及虛函式

2021-07-28 11:57:21 字數 1899 閱讀 6639

包含乙個及乙個以上的純虛函式的類就是抽象基類,抽象基類沒有也不能必要定義物件。

**#include 

using namespace std;

class shape

//虛函式

virtual

float volume() const //虛函式

virtual

void shapename() const =0; //宣告乙個純虛構函式

//說明存在純虛構函式的基類不能夠定義物件,多以只能為抽象類

};///

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

class point :public shape

float gety() const

virtual

void shapename() const

//對純虛函式進行重新定義,以便實現函式的多型性

friend ostream & operator

<<(ostream &,const point &);

protected:

float x,y;

};point::point(float a,float b)

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

ostream & operator

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

class circle:public point

//對虛函式進行再定義

friend ostream &operator

<<(ostream &,const circle &); //重定義,第二個引數是對circle常資料成員的引用

protected:

float radius;

};circle::circle(float x, float y, float r):point(x,y),radius(r) {} //函式初始化列表對函式進行初始化

void circle::setradius(float r)

float circle::getradius() const

float circle::area() const

ostream &operator

<<(ostream &output,const circle &c)

//宣告cylinder類

class cylinder:public circle

//對虛函式進行重定義

friend ostream& operator

<<(ostream&,const cylinder &);

protected:

float height;

};cylinder::cylinder(float a, float b, float r, float h):circle(a,b,r),height(h) {}

void cylinder::setheight(float h)

float cylinder::area() const

float cylinder::volume() const

ostream &operator

<<(ostream &output,const cylinder& cy)

int main()

**

多型性 虛函式

先來講講賦值相容規則。前面說過,派生類如果是從基類公有繼承的,則它會包含基類中除建構函式和析構函式外的所有成員,基類的公有成員也成為派生類的公有成員,又因為物件只能訪問類的公有成員,所以基類物件具有的功能,派生類物件都有。這樣就引出了賦值相容規則。賦值相容規則就是指在基類物件可以使用的地方都可以用公...

多型性 虛函式

虛函式是過載的另一種表現形式,是一種動態的過載方式。虛函式呼叫與函式體之間的聯絡在執行時才建立。c 中可以用基類的物件指標可以指向它的公有派生物件,當它指向公有派生類物件時,只能訪問派生類中從基類繼承來的成員,而不能訪問派生類中定義的成員。當指標指向不同的物件時,分別呼叫不同類的成員函式,如果將函式...

多型性和虛函式

11.27 多型指的是同樣的資訊被不同型別的物件接收導致不同的行為,包括 靜態多型性和動態多型性。靜態多型性包括 函式過載和運算子過載 動態多型主要 由虛函式實現。虛函式宣告 virsual 型別說明符 函式名 參數列 純虛函式 virtual 函式型別 函式名 參數列 0 在派生類中定義 抽象類 ...