第十周第十一周阅读程序-5-d

来源:互联网 发布:笔记本强力卸载软件 编辑:程序博客网 时间:2024/04/28 20:59
/*copyright(c)2016.烟台大学计算机学院  * All rights reserved,  * 文件名称:text.Cpp  * 作者:刘涛  * 完成日期:2016年5月7日  * 版本号:vc++6.0  * 问题描述:阅读下面的定义,请说出在测试函数中不同情况的调用产生的结果  */  #include<iostream>  using namespace std;  class A  {  protected:      int a,b;  public:      A(int aa,int bb):a(aa),b(bb){}      void printA()      {          cout<<"a:"<<a<<"\tb:"<<b<<endl;      }  };  class B:public A  {      int c;  public:      B(int aa,int bb,int cc):A(aa,bb),c(cc){}      void printB()      {          cout<<"a:"<<a<<"\tb:"<<b<<"\tc:"<<c<<endl;      }  };  int main()  {      A a(1,1);      B b(2,3,4);      A *p=&a;      p->printA();      p=&b;      p->printA();     // p->printB();    return 0;  }  错误原因:A类中不存printB这个成员函数,printB是B类中的成员函数。而B是派生类,A是基类。
p是A类中的指针,它指向A类中的成员,而p后来又指向B类中的b时,并不会指向B类中的成员。
                                       正确答案:a:1   b:1          a:2   b:3

0 0
原创粉丝点击