假设我有基类A 和派生类B 。 B的构造函数调用A的构造函数,在其中我调用一个函数,说func
来做一些类型相关的事情。我的意思是,我为A做了func
,并在B中覆盖了这个方法。
我的问题:
在构造B的阶段,也就是说,在A的构造函数中,对象的类型是什么?虽然,我认为这是A.但我不确定。如果它是A,我总是把A func
称为对吗?无论我想要构建的对象的类型如何
在VS中,在B的构造函数中,我看到“this”的类型是“B”。当我进入A的构造函数时,我看到“this”“A”的类型。
答案 0 :(得分:4)
这是对的。首先构建超类。只有在构造超类之后才能构造派生类。在构建超类A
之前,不会覆盖任何虚方法,调用它们将调用A
的虚方法。如果它们是纯粹的而未定义,则会导致未定义的行为。
答案 1 :(得分:0)
好吧并不重要,只要控制在B的构造函数中,代码将根据B的可见性执行,如果你在B的构造函数中调用你的func,B中的覆盖函数是可见的,因此B的func被执行,现在在A的构造函数A的func是可见的,因此A的func将被执行。