zoukankan      html  css  js  c++  java
  • 3.5 C++间接继承

    参考:http://www.weixueyuan.net/view/6362.html

    总结:

      假设类C继承自类B,类B继承自类A。那么类C中的除了能够继承B类的成员函数和成员变量外,同样也能继承B类继承自A类的所有成员。换言之,类C可以继承来自类A的所有成员。因此继承既可以是直接继承,也可以是间接继承。

    例1:

    class A
    {
    public:
        int getx(){return x;}
        void setx(int a){x = a;}
    private:
        int x;
    };
    
    class B : public A
    {
    public:
        int gety(){return y;}
        void sety(int b){y = b;}
    private:
        int y;
    };
    
    class C : public B
    {
    public:
        int getz(){return z;}
        void setz(int c){z = c;}
    private:
        int z;
    };

    在本例中,先定义了类A,然后通过派生定义了类B,之后再派生出类C。B类和C类都有自己新增的成员变量和成员函数。下面我们将以表格的形式列出类A、B和C的所有成员和成员变量。

    成员属性来源
    A x private 自身
    getx public 自身
    setx public 自身
    B x 不可访问 继承自类A
    setx public 继承自类A
    getx public 继承自类A
    y private 类B新增
    sety public 类B新增
    gety public 类B新增
    C x 不可访问 继承自类B
    setx public 继承自类B
    getx public 继承自类B
    y 不可访问 继承自类B
    sety public 继承自类B
    gety public 继承自类B
    z private 类C新增
    setz public 类C新增
    getz public 类C新增


    从表中我们可以看出类C不仅包含B类的成员,同时还包含了类A中的成员,在表格中我们都这些成员都统一归为继承自类B,而实际上我们也可以将成员变量x及成员函数setx和getx视为间接继承自类A。当然,间接继承所得的成员变量和成员函数,其属性遵循直接继承时的规则。

  • 相关阅读:
    欧拉回路的判断(hdu1878)其一
    最长公共子序列(不是子串)hdu1159
    线段树(hdu1166)
    记忆化搜索(hdu1078)
    分考场问题。。。
    hdu2087
    cf540C
    x86 寄存器 | DPL,RPL,CPL 之间的联系和区别
    深度学习 | 训练网络trick——mixup
    python | Argparse中action的可选参数store_true,store_false到底是什么意思?
  • 原文地址:https://www.cnblogs.com/yongpan/p/7631728.html
Copyright © 2011-2022 走看看