第十周项目 0 阅读程序(5)

来源:互联网 发布:golang beego 编辑:程序博客网 时间:2024/06/06 09:17
/* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:main.cpp * 作    者 :韩娟 * 完成日期 :2015年6月2日 * 版 本 号 :v1.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=b;    a.printA();    b.printA();    b.printB();    return 0;}


 

2)

b=a;    a.printA();    b.printA();    b.printB();


程序会发生编译错误,原因是:基类不能向派生类赋值

 

 

3)

    A &r1=a;    A &r2=b;    r1.printA();    r2.printA();    r2.printB();


需要删去的一行是:

r2.printB();



错误的原因:

赋值的时候只是针对数据成员而不是成员函数。

 

4)

    A *p=&a;    p->printA();    p=&b;    p->printA();    p->printB();


需要删去的是:

p->printB();


原因:

只想基类的指针和指向派生类的指针出现了问题。

 

5)

在class A中增加成员函数:

    int getA(){return a;}


在main函数前增加一般函数:

void f(A x){    cout<<"aaaaah, my a: "<<x.getA()<<endl;}


main函数中指定部分为:

    f(a);    f(b);


 

 

0 0