C调用从基类派生的覆盖函数
发布时间:2020-12-16 10:01:42 所属栏目:百科 来源:网络整理
导读:我有两个类,A和B,我需要一个B中的覆盖函数从A的构造函数中调用.这是我已经拥有的: class A { A(char* str) { this-foo(); } virtual void foo(){}}class B : public A { B(char* str) : A(str) {} void foo(){ //stuff here isn't being called }} 如何从A
我有两个类,A和B,我需要一个B中的覆盖函数从A的构造函数中调用.这是我已经拥有的:
class A { A(char* str) { this->foo(); } virtual void foo(){} } class B : public A { B(char* str) : A(str) {} void foo(){ //stuff here isn't being called } } 如何从A :: A()中获取在B :: foo()中调用的代码? 解决方法
这种设计在C中是不可能的:B对象的order of construction是首先构造基础A子对象,然后在其上构造B. 结果是,在A构造函数中,你仍在构造一个A对象:此时调用的任何虚函数都是A的函数.只有当A构造完成并且B构造开始时,才会有虚函数B变得有效. 为了实现你想要的,你必须使用两步模式:1)你构造对象,2)你初始化它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 将xaml代码ItemsSource =“{Binding}”设置为后面的代
- TIOBE 10 月编程语言排行榜:Swift 正过时?
- 设计模式-OOD的设计原则(5)-"合成聚合复用原则"
- 无法使用adb logcat在react-native app中看到Android日志:
- c# – LINQ – 使用OrderBy和GroupBy的子查询
- unit-testing – 不返回值的方法的moq callbase(void方法)
- C++实现顺序表的方法
- 如何在我们的ipad或iphone应用程序中打开app store?
- (六十二)c#Winform自定义控件-警灯(工业)
- Dojo学习笔记(1. 模块与包)