赞
踩
观察下边一段代码:
- 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;
- };
1.在main函数中能否用b1.i,b1.j和b1.k引用派生类B对象b1中基类A的成员
2.派生类B中成员函数能否调用基类中的成员函数f1和f2.
3.派生类B中成员函数能否调用基类中的数据成员i,j,k.
4.能否在main函数中用c1.i,c1.j,c1.k,c1.m.cl.n,c1.p引用基类A的成员i,j,k,派生类B的成员m,n以及派生类C的成员p
5.能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4c成员函数.
6.派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3.
答案在代码中,思考几分钟再看.
- #include<bits/stdc++.h>
-
- using namespace std;
-
- class A {
- public:
- void f1(){}//空函数得写括号
- int i;
- protected:
- void f2(){}//空函数得写括号
- int j;
- private:
- int k;
- };
- class B:public A {
- public:
- void f3() {
- //f1();
- // f2();f1在B类中是公有,f2是保护,可以直接在其派生类中调用
- // i = 1;//可以
- // j = 1;//可以
- // k = 1; //可以
- }
- protected:
- int m;
- private:
- int n;
- };
- class C:public B {
- public:
- void f4(){
- f1();//可以
- f2();//可以
- }
- private:
- int p;
- };
-
- int main() {
- A a1;
- B b1;
- C c1;
- b1.i; //可以访问;
- //b1.j; //不可以访问,j是由通过公有继承基类来的,j在 基类中的权限是保护,在派生类中也是保护,类外不能访问被保护的数据成员。
- //b1.k;//k同理;
- // c1.j; //不可以
- // c1.f1();//可以
- c1.f3();//可以
- c1.f4();//可以
- // c1.f2(); //不可以f2是保护成员
- c1.i;//可以
- // c1.j;//不可以
- // c1.k;//不可以
- // c1.n;//不可以
- // c1.m; //不可以
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。