C++ 多型練習
阿新 • • 發佈:2018-11-16
總時間限制:
1000ms
記憶體限制:
65536kB
// 在此處補充你的程式碼
描述
補充下列程式碼,使得程式的輸出為:
A:3
A:15
B:5
3
15
5
#include <iostream> using namespace std; class CMyClassA { int val; public: CMyClassA(int); void virtual print(); }; CMyClassA::CMyClassA(int arg) { val = arg; printf("A:%d\n", val); } void CMyClassA::print() { printf("%d\n", val); return; }
int main(int argc, char** argv) { CMyClassA a(3), *ptr; CMyClassB b(5); ptr = &a; ptr->print(); a = b; a.print(); ptr = &b; ptr->print(); return 0; }
輸入
無
輸出
見樣例
樣例輸入
None
樣例輸出
A:3 A:15 B:5 3 15 5
這裡顯然class B繼承class A,注意建構函式需要呼叫classA的建構函式,classB中要有print函式,實現多型
#include <iostream> using namespace std; class CMyClassA { int val; public: CMyClassA(int arg); void virtual print(); }; CMyClassA::CMyClassA(int arg) { val = arg; printf("A:%d\n", val); } void CMyClassA::print() { printf("%d\n", val); return; } class CMyClassB: public CMyClassA { int val; public: CMyClassB(int arg) :val(arg), CMyClassA(3*arg) { val = arg; printf("B:%d\n", val); } void print() { printf("%d\n", val); } }; // 在此處補充你的程式碼 int main(int argc, char** argv) { CMyClassA a(3), *ptr; CMyClassB b(5); ptr = &a; ptr->print(); a = b; a.print(); ptr = &b; ptr->print(); return 0; }