有关继承的问题

shellray 2003-08-27 10:06:18
受保护继承:
从基类继承的公共和受保护成员都在派生类中边成可保护的
客户代码不能通过派生类对象去访问基类的公共服务
为什么???????
...全文
16 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
carbon107 2003-10-30
  • 打赏
  • 举报
回复
对啊,c++的特点啊
stone_sh 2003-10-30
  • 打赏
  • 举报
回复
三极管:
楼主用的是protected的继承。子类对象当然就不能直接访问base class中的protected及public的成员变量和函数了。楼上的都说了,这个是Cpp这么规定的,为了实现不同的访问权限。
haosjt 2003-10-28
  • 打赏
  • 举报
回复
这要看你的需要了,你需要访问基类的方法,你就把它定义成public,如果不需要就把它写成protected ,这正是面向对象封装的特点!
Wolf0403 2003-10-28
  • 打赏
  • 举报
回复
三极管:

class A
{
public:
void F(){cout << "F" << endl;}
protected:
void F(int i) { cout << "F(" << i << ")" << endl;}
};

class B : protected A
{
};

int main()
{
B b;
b.F(); // 确实不能访问
}
panzhaoping 2003-10-28
  • 打赏
  • 举报
回复
up
robertnet 2003-09-06
  • 打赏
  • 举报
回复
客户代码不能通过派生类对象去访问基类的公共服务?
楼主何出此问?
客户代码也是可以访问基类的public成员及其函数的。不过如果你在派生类中重载了基类之public及其成员函数的话,那派生类Object(对象)访问的就是派生类的成员及其函数。若要强制访问基类成员及其成员函数的话可以用base::Function()来访问(假设基类为base)。
nazha 2003-08-30
  • 打赏
  • 举报
回复
这样体现了封装和继承啊。要不是有元的话C++也可以成为纯面向对象的编程语言了。
nmgpy 2003-08-27
  • 打赏
  • 举报
回复
有什么不好,这样你就可以更精确的控制类成员的访问范围了。
Healer 2003-08-27
  • 打赏
  • 举报
回复
是啊.
你干吗要保护继承呢??

class A : public class B
不就行了??

为什么??
语法和编译器这么规定的.

64,371

社区成员

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

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