📜  C ++ |继承|问题2(1)

📅  最后修改于: 2023-12-03 15:29:42.616000             🧑  作者: Mango

C++ | 继承 | 问题2

继承是C++中面向对象编程的一个基本概念,它允许一个类继承另一个类的特性。在本文中,我们将讨论关于C++继承中常见的问题2,并提供解决方案。

问题描述

问题2:在继承中,如何调用基类的构造函数?

解决方案

在C++中,在派生类的构造函数中,可以通过调用基类的构造函数来初始化基类的成员变量。例如:

class Base {
    public:
        Base(int x) {
            this->x = x;
        }
    protected:
        int x;
};

class Derived : public Base {
    public:
        Derived(int x, int y) : Base(x) {
            this->y = y;
        }
    private:
        int y;
};

在派生类Derived的构造函数中,我们显式地调用了基类Base的构造函数:

Derived(int x, int y) : Base(x) {

这里,Base(x)表示调用基类Base的构造函数,并传递参数x。这样就可以初始化Base类中的x成员变量。

解决方案解释

在C++中,派生类的构造函数首先会调用基类的构造函数,然后再按照派生类中的定义初始化自己的成员变量。如果派生类没有显式地调用基类的构造函数,则默认调用基类的无参构造函数。

因此,在继承中,需要显式地调用基类的构造函数来初始化基类的成员变量,即使基类没有默认构造函数。

结论

在C++中,派生类的构造函数可以通过调用基类的构造函数来初始化基类的成员变量。必须显式地调用基类的构造函数,即使基类没有默认构造函数。