在构造函数和析构函数中调用虚函数------新标准c++程序设计

  在构造函数和析构函数中调用虚函数不是多态,因为编译时即可确定调用的是哪个函数。如果本类有该函数,调用的就是本类的函数;如果本类没有,调用的就是直接基类的函数;如果基类没有,调用的就是间接基类的函数,以此类推。例如:

#include<iostream>
using namespace std;
class A
{
	public:
		virtual void hello(){cout<<"A::hello()"<<endl;}
		virtual void bye(){cout<<"A::bye"<<endl;}
};
class B:public A
{
	public:
		virtual void hello(){cout<<"B::hello"<<endl;}
		B(){hello();}
		~B(){bye();}
};
class C:public B
{
	public:
		virtual void hello(){cout<<"C::hello"<<endl;}
};
int main()
{
	C obj;
	return 0;
}

  输出结果

B::hello
A::bye

  

posted @ 2018-01-11 10:53  ff_d  阅读(402)  评论(0编辑  收藏  举报