C++:在基类的构造函数中调用重写的方法
C++: call overrided method in base class's constructor
假设我有基类a 和派生类B。B的构造函数调用A的构造函数,其中我调用一个函数,比如func
来做一些类型相关的事情。我的意思是,对于a,我有一个什么都不做的func
并且在b中重写了这个方法
我的问题:在B的构造阶段,也就是在A的构造函数中,对象的类型是什么?然而,我认为是a,但我不确定。如果是A,我总是称A为func
,对吧?不管我要构造的对象是什么类型。
在VS中,在B的构造函数中,我看到"this"的类型是"B"。当我进入和进入A的构造函数时,我看到了"this"A"的类型。
正确。首先构造超类。只有在父类构造好之后,才能构造派生类。在构造超类A
之前,它的任何虚方法都不会被覆盖,调用它们将调用A
的虚方法。如果它们是纯的且未定义,则会导致未定义的行为。
这并不重要,只要控制在B的构造函数中,代码就会按照B的可见性执行,如果你在B的构造函数中调用你的函数B中被覆盖的函数是可见的因此B的函数被执行,现在在A的构造函数中A的函数是可见的,因此A的函数将被执行
相关文章:
- 如何强制从重写方法调用重写的方法基方法?
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 从基类调用重写的方法
- Qt/C++ - 从派生类调用重写方法
- 继承和重写 - 从基类调用重写子方法
- 正在接口构造函数中调用重写的接口方法
- 如果基方法不是虚拟方法,则调用重写的方法
- 调用重写函数并使用基类中的重载变量
- 从基类调用重写的方法
- 从其基类列表中调用重写的函数
- C++继承-从构造函数调用重写
- C++中的多态性:调用重写的方法
- 如何在所有派生类中调用重写方法
- 在派生类中调用重写的方法
- 未调用C++重写的函数
- 使用c++ STL/Boost而不是system()调用重写这个简单的函数
- 如何从基类函数调用重写虚函数
- C++:在基类的构造函数中调用重写的方法
- 调用重写的虚函数而不是重载的