• c++之继承与派生


    再来回顾下继承派生的语法。

    继承方式显示有三种(public, protected, privatez),隐式默认private。所谓继承方式,是指派生类对基类成员的访问权限控制。

    派生类构造函数定义的一般格式如下:

    派生类名(参数总表):基类名1(参数表1),...,基类名m(参数表m),
           成员对象名1(成员对象参数表1),...,成员对象名n(成员对象参数表n)
    {
        派生类新增成员的初始化;
    }

    构造函数调用次序:

    1.调用基类构造函数
    2.调用内嵌成员对象的构造函数
    3.派生类自己的构造函数

    示例:

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class A {
     5 private:
     6     int l1, l2;
     7 public:
     8     A(int l1 = 1, int l2 = 2) :l1(l1), l2(l2) {}
     9     void show() {
    10         cout << "I'm A." << endl;
    11     }
    12 };
    13 class B {
    14 private:
    15     int lv1, l2;
    16 public:
    17     B(int lv1 = 1, int l2 = 2) :lv1(lv1), l2(l2) {}
    18     void show() {
    19         cout << "I'm B." << endl;
    20     }
    21 };
    22 class C: public A, public B{
    23 private:
    24     int lv1, lv2;
    25     A ta;
    26 public:
    27     C(int r1, int r2, int r3, int r4, int r5, int r6, int r7, int r8) :A(r1, r2), B(r3, r4), ta(r5, r6) {
    28         this->lv1 = r7;
    29         this->lv2 = r8;
    30     }
    31     void show() {
    32         cout << "I'm C." << endl;
    33         A::show();
    34         B::show();
    35     }
    36 };
    37 
    38 int main() {
    39     C tc(1, 2, 3, 4, 5, 6, 7, 8);
    40     tc.show();
    41     return 0;
    42 }

    假若多个基类拥有相同名称的成员x,而此时派生类去调用x,系统无法判断去调哪个基类的x,由此产生二义性。解决方式可以是成员名限定(eg:A::show();)或者成员重定义(同名覆盖,如上例的C::show())。

  • 相关阅读:
    react-router刷新页面Cannot GET 问题
    react学习之弹出层
    react学习之js-xlsx导入和导出excel表格
    c#串口通信并处理接收的多个参数
    react与微信小程序
    promise知识点小结
    汇编命令小记
    Firebase-config 在android中的使用
    python:html元素解析
    Toast实现源码解析
  • 原文地址:https://www.cnblogs.com/jiu0821/p/5249629.html
Copyright © 2020-2023  润新知