C++构造函数中不能调用虚函数
在构造函数中调用虚函数,并不会产生多态的效果,就跟普通函数一样。 c++ primer 第四版中497页15.4.5构造函数和析构中的虚函数讲到,如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身类型定义的版本。另外,必须通过基类类型的引用或指针进行函数调用才会发生多态。 相关...
C++:构造函数中调用虚函数
C++交流群: 302558294(欢迎你的加入) 原文地址:http://blog.csdn.net/alex_my/article/details/44017509 ,感谢原作者总结分享 谈谈关于构造函数中调用虚函数的情况,仅讨论单继承,不考虑虚拟继承和多重继承。 测试平台:VS20...
C++中构造函数能调用虚函数吗?
环境:XPSP3 VS2005 今天黑总给应聘者出了一个在C++的构造函数中调用虚函数的问题,具体的题目要比标题复杂,大体情况可以看如下的代码: class Base{public:Base(){Fuction();}virtual void Fuction(){cout...
C++中构造函数能调用虚函数吗?
C++中构造函数能调用虚函数吗? 分类: C++ Win32 2011-08-31 00:07 4481人阅读 评论(8) 收藏 举报 c++ class 编译器 c 汇编 java 环境:XP...
C++中构造函数能调用虚函数吗?
在调用Base的构造函数时已经出现了虚函数表指针,这个指针指向Base的虚函数表,所以在Base的构造函数中调用的虚函数其实都是Base的虚函数; 而在构造A时,虚函数表指针被指向了A的虚函数表,所以此时调用的虚函数其实是A的虚函数表中的项。 也就是说多态这个功能被屏蔽了。 C++标准2.7...
在基类的构造函数中调用虚函数时为何调用基类的而不是派生类的?
看如下代码: #include <stdlib.h>#include <iostream>using namespace std;class Base{public:Base (void){this->func();}void callFunc (){this->...
关于在C#中构造函数中调用虚函数的问题
在C#中如果存在类的继承关系,应避免在构造函数中调用虚函数。这是由于C#的运行机制造成的,原因如下:新建一个类实例时,C#会先初始化该类(对类变量赋值,并将函数记在函数表中),然后再初始化父类。构造函数的执行则相反,先执行父类的,再执行本身的。如果类包含对父类虚函数的重载,在父类构造函数中调用虚函数...