C++ 父创建者是否可以不在子项的开头启动';C+中的s creator+;遗产

C++ 父创建者是否可以不在子项的开头启动';C+中的s creator+;遗产,c++,inheritance,C++,Inheritance,我只想在启动家长的创建者之前做一些调整。可能吗?如果没有,您将如何解决此问题 #include <iostream> using namespace std; class vehicle { protected: string type = "vehicle"; public: vehicle() { cout << type << " created" <<endl; } void what_am_i(

我只想在启动家长的创建者之前做一些调整。可能吗?如果没有,您将如何解决此问题

#include <iostream>
using namespace std;

class vehicle
{
    protected:
    string type = "vehicle"; 
    public:
    vehicle() { cout << type << " created" <<endl; }
    void what_am_i() { cout << "I am a " << type <<endl;}
};

class car: public vehicle
{
    public:
    car() 
    { 
        type = "car";
        //I would like to launch vehicle() here ;
    }
};

int main()
{
    car Lorean;
    Lorean.what_am_i();
}
通缉结果:

car created
I am a car
Automovil creado.
Soy un automovil
PD:构造函数输出只是一个示例。我需要在父类的创建者中启动一些进程,这些进程使用许多必须在每个子类中更新的属性。所有的过程都是完全相同的,所以所有的过程都在父创建者中运行会很好

PP:为了说明我希望用C++做什么,请看我用Python 3做了什么。在这里,家长的创建者可以随时启动,甚至永远不会启动(这种行为在C++中似乎是不可能的):

当前和想要的结果:

car created
I am a car
Automovil creado.
Soy un automovil

简单的解决方案:不要在构造函数中进行输出。理想的构造函数应该对其成员进行基本初始化,而不是其他任何操作。在您的简单示例中,您甚至不需要显式定义(实现)
vehicle
构造函数,您可以使用编译器生成的构造函数

另一种可能的解决方案:创建一个(可能受保护的)
vehicle
构造函数,将“type”作为参数,并在
car
类中使用构造函数初始值设定项列表显式“调用”该构造函数:

class vehicle
{
protected:
    explicit vehicle(std::string t)
        : type{ t }  // Initialize the type member
    {
        std::cout << type << " created\n";
    }

public:
    void what_am_i()
    {
        std::cout << "I am a " << type << '\n';
    }

private:
    std::string type;
};

class car : public vehicle
{
public:
    car()
        : vehicle{ "car" }  // "Call" the parent constructor for its initialization
    {
    }
};
class车辆
{
受保护的:
显式载体(标准::字符串t)
:type{t}//初始化类型成员
{

std::你能使用一种非标准的术语吗?但是如果我正确理解你的问题,你不能推迟基子对象的初始化。的顺序。你甚至不能晚于成员变量初始化基子对象。@DanielLangr谢谢,我需要知道推迟基类的初始化是不可能的,所以现在我可以在其他的解决方案中思考。抱歉我的术语,我的英语不是很好,如果你给我一个更合适的方式来问我的问题,我会很感激。欢迎你,对于术语,只看我以前的评论。我们不是C++的创建者,而是在C++中有构造函数,基本上是指初始化。将参数添加到父级的创建者中会起作用。只是每个子级中要调整的成员很多,处理它会让人不舒服。