注册 登录
编程论坛 C++教室

关于继承

mp3aaa 发布于 2008-11-08 17:18, 764 次点击
类O中定义了一个保护方法F1和一个公有方法F2;
类P为类O的派生类;继承方式如下
class P : private O {…};
P的成员函数能访问O的F1吗?
P的成员函数能访问O的F2吗?
P的对象能访问O的F1吗?
P的对象能访问O的F2吗?
如果是:
class P : private O {…};
class X : private P {…};
X的成员函数能访问O的F1吗?
X的成员函数能访问O的F2吗?
X的对象能访问O的F1吗?
X的对象能访问O的F2吗?

[[it] 本帖最后由 mp3aaa 于 2008-11-8 17:28 编辑 [/it]]
4 回复
#2
sunkaidong2008-11-08 18:12
找本书看吧..书上和多这样的解释
#3
tfg01162008-11-08 18:13
关于继承
类O中定义了一个保护方法F1和一个公有方法F2;
类P为类O的派生类;继承方式如下
class P : private O {…};
P的成员函数能访问O的F1吗?//可以
P的成员函数能访问O的F2吗?//可以
P的对象能访问O的F1吗?//不可以
P的对象能访问O的F2吗?//不可以
如果是:
class P : private O {…};
class X : private P {…};
X的成员函数能访问O的F1吗?//可以
X的成员函数能访问O的F2吗?//不可以
X的对象能访问O的F1吗?//不可以
X的对象能访问O的F2吗?//不可以
#4
mp3aaa2008-11-08 18:31
首先谢谢3楼的回答 我还有个问题要问
class P : private O {…};
class X : private P {…};
X的成员函数能访问O的F1吗?//可以  好像是不可以吧?
私有继承 好像是代表 P中的F1 F2都是私有的了吧? 那为什么P的子类X 还能访问 F1呢?
#5
shediao2008-11-08 23:15
基类的private成员 对于所有的派生类都是不可见的, 其他的 成员访问权限和继承权限比较 取小的权限就是这个成员在派生类中的访问权限 比如:

class supper{
private:
   int x;
protected:
   int y;
public:
   int z;
}
class sub:public supper{
private:
   int m;
}

x 是private成员 对于派生类sub 是不可见的
y 是protected成员 因为protected<public 所以 y在sub是protected成员
z 是public成员 与继承方式一样不用改变其访问权限
小弟的愚见,不过我相信这一定是正确的。
1