| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:关于一个继承的问题~间接调用类的私有成员问题
取消只看楼主 加入收藏
jackie1918
Rank: 2
等 级:论坛游民
帖 子:15
专家分:72
注 册:2009-7-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于一个继承的问题~间接调用类的私有成员问题
#include<iostream>
using namespace std;
class A{
public:
void dump()const{....}
protected:
void get_x(){x++;}
private:
int x;
};
class B:public A
{
public:
void get(){ get_x();}
/* void get_y(){ y=x;} */
void compare(A &a){ a.get_x();}
protected:
void set(){...}
private:
int y;
};
int main()
{
  B b;
  A a;
/* b.get_y(); */ //wrong! x在B类不可见,不能访问.
b.get();//ok! 由于x是私有的,所以派生类不可见,但能间接访问.

/* (a); */  //wrong!这个是我之前一直没想通的,但是现在清楚了。因为对象a调用的get_x()权限仅属于A,所以对B不可见。

return 0;
}

我在其他地方看的这么个例子~~~虽说明白继承的几种方式,但红色部分b.get; 和(a); 都调用了A类中的函数和私有成员变量,但为什么b.get();可以(属于间接调用A类中的私有成员??),而后者不可以呢。是以为后面用到的是A类对象的缘故吗?
初学菜鸟求教~~
搜索更多相关主题的帖子: 继承 
2009-07-14 16:02
jackie1918
Rank: 2
等 级:论坛游民
帖 子:15
专家分:72
注 册:2009-7-14
收藏
得分:0 
自己做沙发,在线等~~~
2009-07-14 17:29
jackie1918
Rank: 2
等 级:论坛游民
帖 子:15
专家分:72
注 册:2009-7-14
收藏
得分:0 
虽然A类中的get_x().  是个保护函数protected而不是private,所以它的访问权限是本类和它的子类啊~~~它仅对类外部是禁止访问的而已,而对于子类B来说应该是可以调用的吧???
2009-07-17 16:44
jackie1918
Rank: 2
等 级:论坛游民
帖 子:15
专家分:72
注 册:2009-7-14
收藏
得分:0 
哦,有些明白了,还得好好看看这些细节了~~谢谢
2009-07-17 23:03
快速回复:关于一个继承的问题~间接调用类的私有成员问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038993 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved