读书人

求教!privatepublicprotected本身

发布时间: 2012-03-15 11:50:39 作者: rapoo

求教!private,public,protected本身的含义,以及他们所对应继承?
求教!private,public,protected本身的含义,以及他们所对应继承?
我个人理解是:
public:类成员和类用户均可访问。
private:类成员和友元可访问。
protected:类成员和友元可访问,该类的继承类可访问。

但是对他们所对应的继承,我就是比较迷糊了。望开导。

"转换是否可访问“是什么意思?是不是说这个转换是否可以实现?

此外,派生类到基类转换的可访问性,也不是很懂。特别是《C++Primer 4th》关于private继承与protected继承的下面这句话我不是很理解:“如果是private继承,则从private继承类派生的类不能转换为基类。如果是protected继承,则后续派生类的成员可以转换为基类类型。”



[解决办法]
这个说的,按照你的理解其实是可以的了。如果说到继承的层面。Primer4th里面说得我也不知道说啥。

继承用public的话,是表示is-a的关系,继承用private的话是表示is-implement-of的关系。protected的继承我不怎么懂。

欢迎交流。。。
[解决办法]
我记得在C++ primer (第四版特别版),第一次出现讲解继承的地方。看看就明白了。
[解决办法]
私有继承之后,父类成员全变成派生类私有成员,而基类成员构造函数一般不是私有的
[解决办法]
我的也是特别版,跟第四版是一样的,就是多了个《c++编程规范》其他一样
[解决办法]
去看《effective C++》 找答案
[解决办法]
问题1:“如果是private继承,则从private继承类派生的类不能转换为基类”?
答:因为已经私有继承基类了,然后再派生时,派生类没有权限访问父类的父类(即基类)的任何方法,包括构造函数,因此转换从语义上讲没有意义。

问题2:“protected继承,则后续派生类的成员可以转换为基类类型”?
答:如果保护继承,基类的公有或保护接口在父类的protected里面。子类继承后,可以访问父类的保护接口,进而可以访问父类的父类(基类)接口,所以转换成功。

[解决办法]
8楼的解释很好啊,大师。呵呵

读书人网 >C++

热点推荐