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。当然,间接继承所得的成员变量和成员函数,其属性遵循直接继承时的规则。

  • 相关阅读:
    C#深入浅出 修饰符(二)
    HDU 5785 Interesting
    HDU 5783 Divide the Sequence
    HDU 5781 ATM Mechine
    UVA 714 Copying Books
    uva 1471 Defense Lines
    UVA 11134 Fabled Rooks
    UVA 11572 Unique Snowflakes
    UVA 11093 Just Finish it up
    UVA 10954 Add All
  • 原文地址:https://www.cnblogs.com/yongpan/p/7631728.html
Copyright © 2011-2022 走看看