c++题目一道

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:36:42
11. 分析下列程序中的访问权限,并回答下列问题
#include<iostream.h>
class A
{public:
void f1();
protected:
int j1;
private:
int i1;
};
classB:public A
{ public:
void f2();
protected:
int j2;
private:
int i2;
};
class C:public B
{public:
void f3();
};
回答下列问题:
1.派生类B中成员函数f2()能否访问基类A中的成员:f1(),i1 和j1?
2.派生类B的对象b1能否访问基类A中的成员:f1(),i1 和j1?
3.派生类C中成员函数f3()能否访问直接基类B中的成员:f2() 和j2?能否访问间接基类A中的成员:f1(),i1 和j1?
4.派生类C的对象c1能否访问直接基类B中的成员:f2() 和j2?能否访问间接基类A中的成员:f1(),i1 和j1?

1.f1(),i1可以访问j1不可以 private是任何继承方式都不能访问的
2.f1()可以访问,i1只能在内部直接访问不能被对象访问,j1不能
3.f2(),j2可以访问 f1(),i1可以访问 j1不行
4.f2()可以 j2不行 f1可以,i1,j1不行

记住直接访问的属性为public protected 间接访问的属性为public

1.派生类B中成员函数f2()能否访问基类A中的成员:f1(),i1 和j1?
---f2()能访问f1(),因为f1()算公有的,也能访问j1,因为j1算保护类型,专门为继承类设计,至于i1就不能了,因为算私有。
2.派生类B的对象b1能否访问基类A中的成员:f1(),i1 和j1?
-----------------同上
3.派生类C中成员函数f3()能否访问直接基类B中的成员:f2() 和j2?能否访问间接基类A中的成员:f1(),i1 和j1?
----------------记住规则,在继承类中,私有的不可以访问,保护和公有可以
4.派生类C的对象c1能否访问直接基类B中的成员:f2() 和j2?能否访问间接基类A中的成员:f1(),i1 和j1?
---------------同上