C ++:在基类的构造函数

时间:2016-09-27 02:56:38

标签: c++

假设我有基类A 派生类B 。 B的构造函数调用A的构造函数,在其中我调用一个函数,说func来做一些类型相关的事情。我的意思是,我为A做了func,并在B中覆盖了这个方法。

我的问题:
在构造B的阶段,也就是说,在A的构造函数中,对象的类型是什么?虽然,我认为这是A.但我不确定。如果它是A,我总是把A func称为对吗?无论我想要构建的对象的类型如何 在VS中,在B的构造函数中,我看到“this”的类型是“B”。当我进入A的构造函数时,我看到“this”“A”的类型。

2 个答案:

答案 0 :(得分:4)

这是对的。首先构建超类。只有在构造超类之后才能构造派生类。在构建超类A之前,不会覆盖任何虚方法,调用它们将调用A的虚方法。如果它们是纯粹的而未定义,则会导致未定义的行为。

答案 1 :(得分:0)

好吧并不重要,只要控制在B的构造函数中,代码将根据B的可见性执行,如果你在B的构造函数中调用你的func,B中的覆盖函数是可见的,因此B的func被执行,现在在A的构造函数A的func是可见的,因此A的func将被执行。