您的位置:首页 > 编程语言 > C语言/C++

C++之虚函数

2015-11-16 15:18 295 查看
引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。

class Cman

{

public:

virtual void Eat(){……};

void Move();

private:

};

class CChild : public CMan

{

public:

virtual void Eat(){……};

private:

};

CMan m_man;

CChild m_child;

CMan *p ;    //虚函数的使用精髓,如果不定义基类的指针去使用,虚函数就没有太大的意义,

                     //因为虚函数的实现是通过基类的指针指向派生类来实现的虚函数

p = &m_man ;

p->Eat(); //始终调用CMan的Eat成员函数,不会调用 CChild 的

p = &m_child;

p->Eat(); //如果子类实现(覆盖)了该方法,则始终调用CChild的Eat函数

               //不会调用CMan 的 Eat 方法;如果子类没有实现该函数,则调用CMan的Eat函数

p->Move(); //子类中没有该成员函数,所以调用的是基类中的

有人可能会想,定义虚函数又什么用啊?其实很有用,比如你想描述一些事物的属性给别人,而自己不想去实现,就可以定义虚函数,比如盖楼房,你是老板,你给建筑公司描述清楚楼房特性,多少层,建筑公司就可以按照你的方法去实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 虚函数