1. 程式人生 > >多型與虛擬函式-程式設計題#2(C++程式設計第6周)

多型與虛擬函式-程式設計題#2(C++程式設計第6周)

程式設計題#2

來源: POJ (Coursera宣告:在POJ上完成的習題將不會計入Coursera的最後成績。)

注意: 總時間限制: 1000ms 記憶體限制: 65536kB

描述

下面程式的輸出結果是:

destructor B

destructor A

請完整寫出 class A。 限制條件:不得為 class A 編寫建構函式。

123456789101112131415#include <iostream>using namespace std;class A {// };class B:public A { public: ~
B() { cout << "destructor B" << endl; }
};int main() { A * pa; pa = new B; delete pa; return 0;}

輸入

輸出

destructor B

destructor A

樣例輸入

1

樣例輸出

12destructor Bdestructor A

程式碼:

#include <iostream>
using namespace std;
class A {
// 在此處補充你的程式碼
//通過把基類的解構函式宣告為virtual,可以首先呼叫派生類的解構函式,然後呼叫基類的解構函式。
//解決了問題:通過基類的指標刪除派生類物件時,只調用基類的解構函式。
public:
virtual ~A()
{
    cout<<"destructor A"<<endl;  //2
}
};
class B:public A {
    public:
        ~B() { cout << "destructor B" << endl; } //1
};
int main() {
    A * pa;
    pa = new B;
    delete pa;
    return 0;
}