虚函数(virtual)

  • using namespace std;
    class father
    {
    public:
        virtual void jump()const { cout << "父亲可以跳十米" << endl; }
        void run()const { cout << "父亲可以跑万米" << endl; }
    private:
    };
    class son:public father
    {
    public:
        void jump()const { cout << "儿子可以跳十米" << endl; }
        void run()const { cout << "儿子可以跑万米" << endl; }
        void math()const{ cout << "儿子会数学" << endl; }
    private:
    };
    int main()
    {
        father *p = new son;//p调用的都是基类的函数
        p->jump();//调用子类函数(因为调用的是虚函数)
        p->run();//调用基类函数
    //    p->math();//错误  不能调用子类特有的函数
        delete p;
        return 0;
    }  
  • 分析p->jump();//调用子类函数(因为调用的是虚函数):jump()前面加上关键字virtual,表示该函数是有多种形态的,即该函数可能被多个对象所拥有,而且功能不一,换句话说多个对象在调用时产生的效果也不一样。那么 系统在执行到有关键字virtual的函数时就会自动判断是哪个对象调用了它,然后调用该对象的同名函数。
  • 一个函数被说明成虚函数,在派生类中覆盖了该函数,那么该函数也是个虚函数(不管有没有加virtual),不过应该把它说明为虚函数,这样看起来更好懂些。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值