构造函数和析构函数中调用虚拟方法

530阅读 0评论2017-03-03 zcatt
分类:C/C++

C++中,虚拟函数在构造函数和析构函数中调用时,并不会产生到派生类的动态联遍(dynamic binding)效果。实际上,此种情况下所调用的虚函数将会执行自己(相对于声明构造和析构函数的类)类或基类的该函数。
下面例子

class A
{
public:
  A(){};
  virtual func1();
  virtual func2();
};

class B : public A
{
public:
  B()
  {
     func1();
     func2();
   }

  virtual func1();
};

class C : public B
{
public:
  C() {};
  virtual func1();
  virtual func2();
};

C c;     

//这里的c构造执行顺 序
1. A::A()
2. B::B()
  2.1 B::func1(),   注意,不是C::func1()
  2.2 A::func2(), 注意,因无B::func2(),故调用A::func2()
3. C::C()

以上

上一篇:web framework benchmark
下一篇:一些开源项目