包含乙個及乙個以上的純虛函式的類就是抽象基類,抽象基類沒有也不能必要定義物件。
**#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 在派生類中定義 抽象類 ...