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()
以上
阅读(522) | 评论(0) | 转发(0) |