1.在基类中用virtual关键字申明成员函数为虚函数
class CShape
{
public:
virtual void draw()=0;
};
2.在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。
class CTriangle : public CShape
{
public:
void draw();
};
class CSquare : public CShape
{
public:
void draw();
};
3.定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。
4.通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。
void Draw(CShape &shape);
int main()
{
CSquare square;
CShape *p = &shape;
Draw(square);//调用的是square.draw()
p = &square
p->draw(); //调用的是square.draw()
return 0;
}
void Draw(CShape &shape)
{
shape.draw();
}