大虾指点下,关于基类,派生类和继承的,C++ PRIMER的疑问

boxiaoliao 2014-07-25 11:07:25
正在看,有个地方表示不懂
class Base {
public:
void basemem(); // public member
protected:
int i; // protected member
// ...
};
struct Public_derived : public Base {
int use_base() { return i; } // ok: derived classes can access i
// ...
};
struct Private_derived : private Base {
int use_base() { return i; } // ok: derived classes can access i
};


struct Derived_from Private : public Private_derived {
// error: Base::i is private in Private_derived
int use_base() { return i; }
};
struct Derived_from_Public : public Public_derived {
// ok: Base::i remains protected in Public_derived
int use_base() { return i; }
};


为啥Derived_from Private的成员函数use_base返回i是错误的?
按我的理解,i也是Derived_from Private的一个private成员,成员函数使用私有成员有什么不对?
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得不敢出门 2014-07-25
  • 打赏
  • 举报
回复
private继承时,只有基类的public与protected的成员成为派生类的private成员。
zcdabing 2014-07-25
  • 打赏
  • 举报
回复
class Base { public: void basemem(); // public member protected: int i; // protected member // ... }; struct Public_derived : public Base { int use_base() { return i; } // ok: derived classes can access i // ... }; struct Private_derived : private Base { int use_base() { return i; } // ok: derived classes can access i }; struct Derived_from Private : public Private_derived { // error: Base::i is private in Private_derived int use_base() { return i; }//private i 你访问不了 }; struct Derived_from_Public : public Public_derived { // ok: Base::i remains protected in Public_derived int use_base() { return i; } };
boxiaoliao 2014-07-25
  • 打赏
  • 举报
回复
引用 2 楼 zmlovelx 的回复:
private继承时,只有基类的public与protected的成员成为派生类的private成员。
重新看了一遍,明白了 但实际上基类的private成员在派生类中还是存在的,只是无法访问?

64,637

社区成员

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

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