C++ 私有继承(总结)

实现has-a关系有两种方法:

方法1:包含--一个类包含另一个类的对象,注意的地方是编写构造函数时,使用成员初始化列表[对象名()],初始化类成员对象

方法2:私有继承--一个类私有继承另一个类,注意的地方是编写构造函数时,使用成员初始化列表[类名()],初始化类成员对象


问题1:私有继承类如何访问基类的方法?

class Student:private string,private valarray<double>

double Average()const

{  .......

   return valarray<double>::sum()/valarray<double>::size();  //使用类名和作用域解析操作符

   .......

}


问题2:私有继承类如何访问基类对象?

class Student:private string,private valarray<double>

const string &Name()const

{

  return (const string &) (*this);  //使用强制类型转换,为避免调用构造函数创建新的对象,

}                                               //可以使用强制类型转换,创建一个引用


问题3:私有继承如何访问基类的友元函数?

class Student:private string,private valarray<double>

用类名限制函数名不行,因为友元函数不属于类,可以通过显示的强制类型转换为基类,达到目的

ostream & operator<<(ostream &os,const Student &stu)

{

  os<<(const string &)stu;  //将私有派生类stu强制转换为基类string,然后调用string类的方法

}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值