程序設計與算法(三)第03周測驗002:Big & Base 封閉類問題
本文是中國大學MOOC,北京大學程序設計與算法(三)C++面向對象程序設計第三週測驗。本課程學習的github倉庫歡迎Fork
-
總時間限制:
1000ms
-
內存限制:
65536kB
-
描述
程序填空,輸出指定結果
#include <iostream> #include <string> using namespace std; class Base { public: int k; Base(int n):k(n) { } }; class Big { public: int v; Base b; // 在此處補充你的代碼 }; int main() { int n; while(cin >>n) { Big a1(n); Big a2 = a1; cout << a1.v << "," << a1.b.k << endl; cout << a2.v << "," << a2.b.k << endl; } }
-
輸入
多組數據,每組一行,是一個整數
-
輸出
對每組數據,輸出兩行,每行把輸入的整數打印兩遍
-
樣例輸入
3 4
-
樣例輸出
3,3 3,3 4,4 4,4
老規矩,先看主函數:
int main() { int n; while(cin >>n) { Big a1(n); //構造函數,初始化a1 Big a2 = a1; //複製構造函數,複製a1 cout << a1.v << "," << a1.b.k << endl; cout << a2.v << "," << a2.b.k << endl; } }
再看類函數:
class Base { public: int k; Base(int n):k(n) { } }; class Big //有成員變量的類叫封閉類 { public: int v; Base b; //成員對象 // 在此處補充你的代碼 };
注意,這是一個封閉類,課程的PPT有講到:
任何生成封閉類對象的語句,都要使得編譯器明白,對象中的成員對象,是如何初始化的。完成這一任務的方法是通過封閉類的構造函數的初始化列表,成員對象初始化列表中的參數可以是任意複雜的表達式,可以包括函數,變量,只要表達式中的函數或變量有定義就行。
如果題目不懂,不妨把課程對應部分再看一遍。慢慢來,比較快。不要心浮氣躁。
所以我們需要使用初始化列表進行封閉類的初始化:
class Big { public: int v; Base b; // 在此處補充你的代碼 Big(int n):v(n),b(n){} //初始化列表 };
提交,通過。記得下載通過碼。