美文网首页
C++派生类中调用基类成员函数和构造函数

C++派生类中调用基类成员函数和构造函数

作者: 狗子孙 | 来源:发表于2018-09-18 10:52 被阅读544次

C++的派生类中,可以使用基类命名空间,调用基类的成员函数和成员变量,如下所示。

class Base {
public:
    int a  = 5;
    void func() {
        cout << "    输出基类a:" << endl;
        cout << "    " << a << endl;
    };
};

class Derived : public Base {
public:
    int a = 4;
    void func() {
        cout << "    输出派生类a:" << endl;
        cout << "    " << a << endl;
        cout << "    输出基类a:" << endl;
        cout << "    " << Base::a << endl;
    };
    void call() {
        cout << "调用派生类func方法" << endl;
        func();
        cout << "调用基类func方法" << endl;
        Base::func();
    }
};

int main()
{
    Derived d;
    d.call();
    return 0;
}

假设这样一个情况,我们在派生类的构造函数中,希望调用基类的构造函数,但基类没有和派生类构造函数参数相匹配的构造函数。例如下面:

class Base {
public:
    Base(int i) { // 基类没有默认构造函数,当前构造函数仅接受一个参数
        cout << "调用基类构造函数" << endl;
    };
};

class Derived : public Base {
public:
    Derived(int i, int j) { // 派生类构造函数接受两个参数,语法错误,no default constructor exists for class Base
        cout << "调用派生类构造函数" << endl;
    };
};

默认情况下,派生类会调用基类相同参数的构造函数,但这里没有相同参数的构造函数,便会有语法错误,即时我们在派生类的构造函数里调用Base::Base()也不行。解决方法是,在派生类构造函数的初始化列表里调用基类的构造函数,如下:

class Base {
public:
    Base(int i) { // 基类没有默认构造函数,当前构造函数仅接受一个参数
        cout << "调用基类构造函数" << endl;
    };
};

class Derived : public Base {
public:
    Derived(int i, int j): Base(i) { // 派生类构造函数接受两个参数,语法错误,no default constructor exists for class Base
        cout << "调用派生类构造函数" << endl;
    };
};

int main()
{
    Derived d(1, 2);
    return 0;
}

相关文章

  • C++第五篇继承与派生

    派生类将继承它所有基类中除构造函数和析构函数之外所有成员,因此派生类必须负责调用基类构造函数 对基类成员和成员对象...

  • C++派生类中调用基类成员函数和构造函数

    C++的派生类中,可以使用基类命名空间,调用基类的成员函数和成员变量,如下所示。 假设这样一个情况,我们在派生类的...

  • C++学习笔记四

    类继承 1. 派生类 派生类构造 派生类构造函数必须使用基类构造函数 基类应在进入派生类构造函数之前被创建, C+...

  • C++ - 派生类的构造函数

    派生类的构造函数 派生类对象包含基类 对象 执行派生类构造函数之前,先执行基类的构造函数 派生类交代基类初始化,具...

  • 关于派生类和基类构造函数的规则

    1.如果创建派生类对象时不需要提供参数,而且派生类中没有构造函数,则会自动调用基类的构造函数2.如果派生类没有引入...

  • 孙世龙_9.18学习总结

    1.派生类继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外的所有成员,因此派生类对象由两部...

  • 第五章 继承与多态

    学习目的 掌握派生类的定义和使用; 掌握派生类构造与析构函数的定义; 掌握重写基类的成员函数; 掌握通过基类指针或...

  • 9.18学习总结

    今天学了继承和派生。 派生类:继承了基类的除了构造函数、析构函数、拷贝构造函数和赋值运算符重载函数之外的所有成员,...

  • 9月19日-4期C语言学习总结

    今天学习了派生类的构造及析构函数 其中 基类的构造函数不被继承,需要在派生类中自行声明。 派生类构造函数执行的一般...

  • 构造语义学

    继承构造函数 类具有可派生性,派生类可以自动的获取基类的成员变量和接口(虚函数和纯虚函数,public派生)。不过...

网友评论

      本文标题:C++派生类中调用基类成员函数和构造函数

      本文链接:https://www.haomeiwen.com/subject/ydpynftx.html