曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2466|回复: 0
打印 上一主题 下一主题

保护继承

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-12-13 09:19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
保护继承是私有继承的变体,它使用 protected 关键字:
  1. class Student : protected std::string, proteced std::valarray<double> { }
复制代码
使用保护继承时,基类的公有成员和保护成员都将成为派生类的保护成员。

在使用私有继承时,第三代类将不能使用基类的接口,这是因为基类的公有方法在派生类中将变成私有方法。
在使用保护继承时,基类的公有方法在第二代中将变成受保护的,因此第三代派生类可以使用它们。

关于 protected 的更多信息,还可以参考《使用保护成员(protected)》。


下面对公有、私有和保护继承做了总结:
特征
公有继承
保护继承
私有继承
公有成员变成--> 派生类的公有成员派生类的保护成员 派生类的私有成员
保护成员变成--> 派生类的保护成员派生类的保护成员 派生类的私有成员
  私有成员变成--> 只能通过基类接口访问只能通过基类接口访问 只能通过基类接口访问
能否隐式向上转换是(只能在派生类中)


隐式向上转换(implicit upcasting)意味着无需进行显示类型转换,就可以将基类指针或指向派生类对象。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 16:03 , Processed in 0.075476 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表