- 我们使用虚函数的目的是为了动态联编,但是在构造函数和析构函数中使用虚函数是无法达到此目的的。因为无论是在构造函数还是析构函数中调用虚函数,那么都是会进行实调用而非需调用,可以将此构造和析构的过程理解成一个栈,无论是在进行构造还是析构的过程中当需要运行基类的构造或者析构函数中的虚函数的时候,都是在栈底,而派生类的成员都是没有的(不是没有初始化就是已经被析构)。
- 大多数编译器会在违反此条例的时候报错,但是假如我们在构造函数或析构函数中调用了普通函数a,而a又调用了虚函数b,编译器就会无动于衷,而这种情况会间接违反此条例,造成的危害是等价的。
- 构造函数负责构造‘虚指针’来进行虚函数的调用。
- 假如真的需要在构造函数期间得知派生类的信息,那么可以使用从派生类传递参数到基类的方式来进行。
条款09:绝不在构造和析构过程中调用virtual函数
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 《Effective C++ 中文版 第三版[https://book.douban.com/subject/18...
- 1. 析构函数和虚析构函数 如果基类的析构函数是虚的,那么它的派生类的析构函数都是虚的 这将导致:当派生类析构的时...