OJ第三批——Problem L: C++繼承(改錯題)

問題及代碼:

Problem L: C++繼承(改錯題)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 352  Solved: 243
[Submit][Status][Web Board]

Description

下面的程序中,存在着兩處語法錯誤。請改正錯誤,使程序按下面輸入輸出的規定運行。
只提交修改過的begin到end部分的代碼。
//******************** begin ********************
#include <iostream>
using namespace std;
class A
{
private:
    int a,b;
public:
    A(int aa, int bb) {a=aa; b=bb;}
    void printA()
    {
        cout<<"a: "<<a<<" b: "<<b<<endl;
    }
}
class B: public A
{
    int c;
public:
    B(int aa, int bb, int cc){a=aa;b=bb;c=cc;}
    void printB()
    {
        cout<<"a: "<<a<<" b: "<<b<<" c: "<<c<<endl;
    }
};
//********************* end ********************
int main()
{
    int a1, a2;
    int b1, b2, b3;
    cin>>a1>>a2;
    cin>>b1>>b2>>b3;
    A a(a1,a2);
    B b(b1,b2,b3);
    a=b;
    a.printA();
    b.printB();
    return 0;
}

Input

用於初始化對象的5個整數

Output

調用 a.printA();和b.printB();產生輸出

Sample Input

1 2
3 4 5

Sample Output

a: 3 b: 4
a: 3 b: 4 c: 5

HINT

 

//******************** begin ********************
#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<<" b: "<<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::a<<" b: "<<A::b<<" c: "<<c<<endl;
    }
};
//********************* end ********************
int main()
{
    int a1, a2;
    int b1, b2, b3;
    cin>>a1>>a2;
    cin>>b1>>b2>>b3;
    A a(a1,a2);
    B b(b1,b2,b3);
    a=b;
    a.printA();
    b.printB();
    return 0;
}


 

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章