C++ 看上去像多型的練習題
阿新 • • 發佈:2018-12-16
1:看上去像多型
總時間限制:
1000ms
記憶體限制:
65536kB
// 在此處補充你的程式碼
描述
程式填空產生指定輸出
#include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal="<< nBVal << endl; } void Fun() {cout << "B::Fun" << endl; } B ( int n ) { nBVal = n;} };
int main() { B * pb; D * pd; D d(4); d.Fun(); pb = new B(2); pd = new D(8); pb -> Fun(); pd->Fun(); pb->Print (); pd->Print (); pb = & d; pb->Fun(); pb->Print(); return 0; }
輸入
無
輸出
D::Fun B::Fun D::Fun nBVal=2 nBVal=24 nDVal=8 B::Fun nBVal=12
樣例輸入
無
樣例輸出
D::Fun B::Fun D::Fun nBVal=2 nBVal=24 nDVal=8 B::Fun nBVal=12
從主函式可以看出,除了B類,還有一個D類,公有繼承B類,其中Fun和Print兩個函式需要重寫
#include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal=" << nBVal << endl; } void Fun() { cout << "B::Fun" << endl; } B(int n) { nBVal = n; } }; // 在此處補充你的程式碼 class D:public B { private: int nDVal; public: D(int nDval_) :nDVal(nDval_),B(3*nDval_){}; void Fun() { cout << "D::Fun" << endl; } void Print() { B::Print(); cout << "nDVal=" << nDVal << endl; } }; int main() { B * pb; D * pd; D d(4); d.Fun(); pb = new B(2); pd = new D(8); pb->Fun(); pd->Fun(); pb->Print(); pd->Print(); pb = &d; pb->Fun(); pb->Print(); return 0;