基类的构造函数与子类的构造函数

动态 未结 0 72
小小草
小小草 LV1 2023年9月23日 23:40 发表
在C++中,子类的构造函数会自动调用基类的构造函数,以确保基类的成员变量被正确地初始化。如果没有显式地调用基类的构造函数,则会默认调用基类的无参构造函数。 例如,假设我们有一个基类`Base`和一个派生类`Derived`,它们的构造函数如下: ``` class Base { public: Base(int x) : m_x(x) {} private: int m_x; }; class Derived : public Base { public: Derived(int x, int y) : Base(x), m_y(y) {} private: int m_y; }; ``` 在上面的代码中,`Base`类中定义了一个带参数的构造函数,而`Derived`类中定义了一个带两个参数的构造函数。在`Derived`类的构造函数中,我们通过调用`Base`类的构造函数来初始化基类的成员变量。这样做可以确保在创建`Derived`对象时,`Base`类的成员变量也能够被正确地初始化。 需要注意的是,在调用基类的构造函数时,必须使用初始化列表(initializer list),而不能在构造函数体中直接赋值。例如,下面的代码是错误的: ``` class Derived : public Base { public: Derived(int x, int y) { Base(x); // 错误:不能在构造函数体中调用基类的构造函数 m_y = y; } private: int m_y; }; ``` 在上面的代码中,我们试图在`Derived`类的构造函数体中调用基类的构造函数,但这是错误的。正确的做法是使用初始化列表来调用基类的构造函数: ``` class Derived : public Base { public: Derived(int x, int y) : Base(x), m_y(y) {} private: int m_y; }; ``` 在上面的代码中,我们使用初始化列表来调用基类的构造函数,并同时初始化派生类
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复