题目
有以下程序结构,请分析访问权限。
class A
{
public:
void f1();
int i;
protected:
void f2();
int j;
private:
int k;
};
class B:public A
{
public:
void f3();
protected:
int m;
private:
int n;
};
class C:public B
{
public:
void f4();
private:
int p;
};
int main()
{
A a1;
B b1;
C c1;
}
1)完成下表,以说明各成员在各类中的访问属性(四种:公、保、私、不)。
f1 | i | f2 | j | k | f3 | m | n | f4 | p | |
A | 公 | 公 | 保 | 保 | 私 | 不 | 不 | 不 | 不 | 不 |
B | 公 | 公 | 保 | 保 | 不 | 公 | 保 | 私 | 不 | 不 |
C | 公 | 公 | 保 | 保 | 不 | 公 | 保 | 不 | 公 | 私 |
(2)在main函数中能否用b1.i,b1.j和b1.k引用派生类B对象b1中基类A的成员?
答:
b1.i:能
b1.j:不能
b1.k:不能
(3)派生类B中的成员函数能否调用基类A中的成员函数f1和f2?
答:
f1:能
f2:能
(4)派生类B中的成员函数能否引用基类A中的数据成员i,j,k?
答:
i:能
j:能
k:不能
(5)能否在main函数中c1.i,c1.j,c1.k,c1.m,c1.n,c1.p引用基类A的成员i,j,k,派生类B的成员m,n,以及派生类C的成员p?
答:
c1.i:能
c1.j:不能
c1.k:不能
c1.m:不能
c1.n:不能
c1.p:不能
(6)能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4成员函数?
答:
c1.f1():能
c1.f2():不能
c1.f3():能
c1.f4():能
(7)派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3?
答:
f1:能
f2:能
f3:能