c++中构造函数和析构函数能够调用虚函数
2021-06-05 15:02
标签:-- 实现 virtual 类型 font 构造 虚函数 des his 1. 从语法上讲,构造函数和析构函数都能调用虚函数,没有问题; 2. 从实际效果上,无法实现虚函数的作用, 例如,基类的构造函数中即使调用虚函数,也是调用的基类自己实现的虚函数; 基类的析构函数中即使调用虚函数,也是调用的基类自己实现的虚函数; 《Effective c++》条款09:不要在构造函数和析构函数中调用virtual函数,因为这类调用不会下降至派生类; 解释如下: 在派生类对象的基类构造期间,对象的类型是基类的类型,而不是派生类类型; class CSub : public CBase ~CSub() virtual void func() { c++中构造函数和析构函数能够调用虚函数 标签:-- 实现 virtual 类型 font 构造 虚函数 des his 原文地址:https://www.cnblogs.com/weiyouqing/p/14626134.htmlclass CBase
{
public:
CBase()
{
cout "this is CBase create" endl;
func();
cout "********************" endl;
}
~CBase()
{
cout "this is ~CBase destory" endl;
func();
cout "---------------------" endl;
}
virtual void func()
{
printf("this is CBase func\n");
}
};
{
public:
CSub()
{
printf("this is CSub create\n");
func();
cout }
{
printf("this is ~CSub destory\n");
func();
cout }
{
printf("this is CSub func\n");
}
};
CSub c;
}this is CBase create
this is CBase func
********************
this is CSub create
this is CSub func
+++++++++++++++++++
this is ~CSub destory
this is CSub func
===================
this is ~CBase destory
this is CBase func
---------------------
上一篇:C语言实现“三子棋”游戏
下一篇:C++ 调用 Lua 代码