C++第07课 继承 (二)

1.继承的传递性

  继承具有传递性:无论继承多少次,属性都存在

2.多继承

class A {
public:
    A(string name1, string name2) :name1(name1), name2(name2) {}
protected:
    string name1;
    string name2;
};
class B {
public:
    B(string name1, string name2) :name1(name1), name2(name2) {}
protected:
    string name1;
    string name2;
};
//多继承中,构造顺序只和继承顺序有关,和初始化参数列表无关
class C :public A,protected B{
public:
    C(string Aname1, string Aname2, string Bname1, string Bname2)
        :A(Aname1, Aname2), B(Bname1, Bname2) {
        this->name1 = Aname1 + Bname1;
        this->name2 = Aname2 + Bname2;
    }
    void print()
    {
        cout << name1 << "\t" << name2 << endl;
    }
protected:
    string name1;
    string name2;
};
int main()
{
    C c("欧阳", "", "上官", "");    //欧阳上官 峰云
    c.print();
    return 0;
}

3.继承中的特殊成员

   继承的静态属性是子类和父类共有的属性。

   静态成员函数不能直接访问非静态数据成员,必须指定对象。

class parent {
public:
    parent() { num++; }
    static int num;
};
int parent::num = 0;
class son :public parent{
public:

protected:
};

int main()
{
    parent p;
    cout << parent::num << endl;    //1
    son s;
    cout << son::num << endl;        //2

    cout << parent::num << endl;    //2
    return 0;
}

 

posted @ 2021-09-06 17:44  Creature_lurk  阅读(54)  评论(0编辑  收藏  举报