虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標引用來訪問基類和派生類中的同名函式。
#include
using namespace std;
class student
;//student類成員函式的實現
//宣告抽象基類shape
class shape
virtual
float volume()const
virtual
void shapename() const=0; //純虛函式
/*由於考慮到在point類中不再對area和volume函式進行重新定義,因此沒有吧area和volume也宣告為純虛函式*/
};class point:public shape
float gety() const
virtual
void shapename() const //對純虛函式進行再定義
friend ostream & operator
<
protected:
float x,y;
};point::point(float a,float b)
void point::setpoint(float a, float b)
ostream &operator
<
class circle:public point
friend ostream & operator
<
protected:
float radius;
};circle::circle(float a,float b,float r):point(a,b),radius(r){}
void circle::setradius(float r)
float circle::getradius()const
float circle::area() const
ostream &operator
<
class cylinder:public circle
friend ostream &operator
<
protected:
float height;
};cylinder::cylinder(float x, float y, float r, float h):circle(x,y,r),height(h)
void cylinder::setheight(float h)
float cylinder::area() const
float cylinder::volume() const
ostream &operator
<
int main()
虛函式 純虛函式
一 定義.純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加 0 virtual void funtion1 0 二 引入原因 1 為了方便使用多型特性,我們常常需要在基類中定義虛函式。2 在很多情況下,基類本身生成...
虛指標,虛函式,虛函式表,純虛函式
虛指標 虛繼承 在使用多重繼承時,如存在 class a 有m a變數 class a1 virtual public a,m a1 class a2 virtual public a m a2 class b public a1,public a2 m b 時 存在以下記憶體儲存順序 虛指標 指向...
虛函式和純虛函式
除了繼承外,c 的另乙個優良特性是支援多型,即允許將派生類的物件當作基類的物件使用。如果a是基類,b和c是a的派生類,多態函式test的引數是a的指標。那麼test函式可以引用a b c的物件。示例程式如下 class a void test a a class b public a class c...