C++学习 多重继承

===================多重继承====================
#include <iostream>
using namespace std;
class Father
{
public:
    void setA(int h){height = h;}
    void showA(){cout<<"身高是:"<<height<<endl;}
private:
    int height;
};
class Mother
{
public:
    void setB(int w){weight = w;}
    void showB(void){cout<<"体重:"<<weight<<endl;}
private:
    int weight;
};
class Son:public Father,public Mother  多个类派生一个子类
{
public:
    void setC(int a){age = a;}
    void showC();//{showA();showB();cout<<"年纪:"<<age<<endl;}
private:
    int age;
};
void Son::showC()
{
    showA(),showB(),cout<<"年纪:"<<age<<endl;  逗号分隔
    showA();showB();cout<<"年纪:"<<age<<endl;  分号分隔 都能成功运行
}
int main()
{
    Son s;
    s.setA(168);
    s.setB(50);
    s.setC(26);
    s.showC();
    return 0;
}
【派生权限】
若class Son:public Father,private Mother 
则Father类的成员在子类中权限不变,即Father类中的共有/私有成员在Son中依旧是共有/私有成员
而Mother类中的成员在子类中全都变成了私有的,即Mother类中的私有成员,在Son中变成不可访问,
Mother类中的 public 和 protected 成员都变成了 private 成员

倘若是私有派生,要想访问父类Mother的成员,就必须在子类中写接口函数!
【C++ 类的继承,子类以及之类的对象 对父类成员函数的访问权限】
[http://blog.csdn.net/sergery/article/details/8100179#comments]
#include <iostream>
using namespace std;
class Father
{
public:
    void setA(int h){height = h;}
    void showA(){cout<<"身高是:"<<height<<endl;}
private:
    int height;
};
class Mother
{
public:
    void setB(int w){weight = w;}
    void showB(void){cout<<"体重:"<<weight<<endl;}
private:
    int weight;
};
class Son:public Father,private Mother
{
public:
    void setC(int a){age = a;}
    void showC(){showA();showB();cout<<"年纪:"<<age<<endl;}
    void setb(int b){setB(b);}  //接口函数
private:
    int age;
};
int main()
{
    Son s;
    s.setA(168);
    //s.setB(50); 私有继承Mother类,则子类对象不能直接访问
    s.setb(50);
    s.setC(26);
    s.showC();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值