私有继承

使用私有继承,那么基类的共有成员和保护成员都成了派生类的私有成员,基类的公有方法 将成为 派生类的私有方法


一个私有继承的例子

class STUDENT : private std::string, private std::valarray<double>
{

};

一个Student类 私有继承了 string 和 valarray
这个私有继承 提供了两个无名的子对象成员


那么对于私有继承,我们如何用构造函数进行初始化呢?

class STUDENT : private std::string, private std::valarray<double>
{
public:
     STUDENT(const std::string& a , int n);
};
STUDENT::STUDENT(const std::string& a, int n) :std::string(a), 
std::valarray<double>(n)
{

}

我们是用初始化列表 + 类名来 进行构造函数,而不是成员名,因为他两是无名成员


如何访问基类的方法呢

被私有继承后,基类的公有成员,保护成员都成了派生类的私有成员,
所以只能在派生类的方法中使用基类的方法

class STUDENT : private std::string, private std::valarray<double>
{
     typedef std::valarray<double> ArrayDb;
public:
     STUDENT(const std::string& a , int n);
     int StrSize(void) const;
};
int STUDENT::StrSize(void) const
{
     return std::string::size();
}

使用类名+作用于解析运算符 来进行访问 基类的方法

如何访问基类本身

答案是 使用强制类型转化

 std::string str = "zhu";
 STUDENT a(str, 10);
 std::cout << (std::string &)a << std::endl;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值