首页 > 编程语言 > 详细

C++构造函数调用虚函数的后果

时间:2019-12-07 23:04:40      阅读:101      评论:0      收藏:0      [点我收藏+]
#include <iostream>

class cx {
public:
    virtual void func() {
        std::cout << "func" << std::endl;
    }
    cx() {
        func(); //构造函数中调用虚函数,语法上OK,效果上不对,因为当对象由子类进入基类构造时是基类类型的
        //不管如何调用,总只能调用到基类的虚函数,无法调用到子类的虚函数,见下面测试
    }

};

class cb : public cx {
    void func() {
        std::cout << "cb.func" << std::endl;
    }
};
int main()
{
    cx ox; //func
    cb ob; //func

    cx* pox = new cb(); //func
    pox->func(); //cb.func
}

 

C++构造函数调用虚函数的后果

原文:https://www.cnblogs.com/timeObjserver/p/12003563.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!