首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数跟析构函数中调用虚函数

2013-09-06 
构造函数和析构函数中调用虚函数c+++primer P497 构造或析构期间的对象类型对虚函数的绑定有影响--这句

构造函数和析构函数中调用虚函数
c+++primer P497 
"构造或析构期间的对象类型对虚函数的绑定有影响"-->这句话什么意思啊?
"如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身定义的版本"--》是不是如果在构造函数或析构函数中调用虚函数,那么虚函数不起作用了?
菜鸟看不懂啊 有什么实例可以帮助理解这块内容啊 谢谢了先
[解决办法]
构造函数里头,调用虚函数,派生类对象还没有创建出来,所以调用的是父类的函数
析构函数里头,同理,派生类的对象已经析构,就只能调用到父类的函数
例如;
class A
{
   A()
 {
   this->print();  //这边调用的函数 A::print(), 不是B::print()
 }
  virtual void print()
 {
 }
}

class B: public A
{
  virtual void print()
 {
 }
};
[解决办法]

引用:
c+++primer P497 
"构造或析构期间的对象类型对虚函数的绑定有影响"-->这句话什么意思啊?
"如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身定义的版本"--》是不是如果在构造函数或析构函数中调用虚函数,那么虚函数不起作用了?
菜鸟看不懂啊 有什么实例可以帮助理解这块内容啊 谢谢了先

不是不起作用,而是指虚函数机制还没有生效,这时候vptr可能也没有被设置。

热点排行