为什么派生类调用虚类构造函数以后调用的还是默认构造函数呢
时间: 2023-09-18 17:06:53 浏览: 47
在C++中,派生类的构造函数会首先调用其直接基类的构造函数,然后再执行自己的构造函数体。当派生类构造函数调用虚基类的构造函数时,会调用最底层虚基类的构造函数,然后由底向上逐层调用每个虚基类的构造函数。在虚基类的构造函数中,只能调用虚基类的构造函数而不能调用派生类的构造函数,因为派生类的构造函数还未执行。因此,当派生类构造函数调用虚基类的构造函数时,只能调用虚基类的默认构造函数,无法调用虚基类的其他构造函数。所以,即使派生类构造函数调用了虚类的构造函数,也只会调用虚类的默认构造函数。
相关问题
派生类构造函数会调用基类构造函数为什么错
在派生类的构造函数中,必须调用基类的构造函数,否则派生类对象无法正确地初始化基类的成员变量。如果没有调用基类的构造函数,就会导致基类成员变量未初始化,从而可能引发未定义行为。因此,派生类构造函数必须在其成员初始化列表中调用基类的构造函数。
如果派生类构造函数没有调用基类构造函数,则会导致编译错误。如果你遇到了这样的错误,请检查你的代码是否正确地调用了基类构造函数。同时,也要注意构造函数调用顺序,基类构造函数应该先于派生类构造函数执行。
创建一个派生类对象要调用什么构造函数
创建一个派生类对象需要调用基类的构造函数和派生类的构造函数。基类的构造函数可以通过派生类的构造函数显式或隐式地调用,以确保基类成员的初始化。如果派生类没有显式地调用基类的构造函数,则会默认调用基类的默认构造函数。