[奇怪]子类访问protected父类成员问题

myjackheroes 2013-04-01 05:11:03
class B
{
protected:
int b ;
} ;


class D
{
private:
int d ;
public:
D( const D& rhs )
{
d = rhs.d ; // ok
b = rhs.b ; // 竟然也可以?????
}
}

我以前记得同样在VS2008下调试过.
子类对象A是不能访问子类对象A2的B::protected成员数据.
<<The C++ programming languge>>也有提到过一句.

可以我今天去翻查那些记录.都找不到了.
希望论坛里的朋友给个看法.
...全文
78 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myjackheroes 2013-04-01
  • 打赏
  • 举报
回复
也许我以前错了.也许子类A能够访问A2的Base::protected成员数据. 只是让我奇怪的是,我以前确实调试过多次,证明过多次...
myjackheroes 2013-04-01
  • 打赏
  • 举报
回复
引用 2 楼 sublimepan 的回复:
派生类的成员可以使用其基类的公有和保护的成员,The C++ programming languge 也明确指出的。
你们错了,proctected成员只是能使用自己的父类.不信你可以 class B { protected: ~B() {} } ; class D : public B { void func() { B b ; // error 子类不能访问基类的复制控制.除非在子类的复制控制代码中. } } ;
sublimepan 2013-04-01
  • 打赏
  • 举报
回复
派生类的成员可以使用其基类的公有和保护的成员,The C++ programming languge 也明确指出的。
_sunshine 2013-04-01
  • 打赏
  • 举报
回复
protected 关键字修饰的父类的成员在子类中当然能够被访问啊,这正是protected 关键字的用途之一

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧