3w9:第三週程式填空題4
總時間限制: 1000ms 記憶體限制: 65536kB
描述
下面程式的輸出結果是:
5,5
5,5
請填空:
#include <iostream>
using namespace std;
class Base {
public:
int k;
Base(int n):k(n) { }
};
class Big {
public:
int v; Base b;
// 在此處補充你的程式碼
};
int main() {
Big a1(5); Big a2 = a1;
cout << a1.v << "," << a1.b.k << endl;
cout << a2.v << "," << a2.b.k << endl;
return 0;
}
輸入
無
輸出
5,5
5,5
樣例輸入
無
樣例輸出
5,5
5,5
提示
所缺程式碼具有如下形式:
Big ________________{ }
Big ________________{ }
題解分析
完整程式碼
#include <iostream>
using namespace std;
class Base
{
public:
int k;
Base(int n): k(n) { }
};
class Big
{
public:
int v;
Base b;
// 在此處補充你的程式碼
Big(int a):v(a), b(a){}
};
int main()
{
Big a1(5);
Big a2 = a1;
cout << a1.v << "," << a1.b.k << endl;
cout << a2.v << "," << a2.b.k << endl;
return 0;
}
Big
類是一個封閉類,在生成Big
類物件之前,會先生成Base
類的物件(呼叫Base
類的建構函式生成Big
類的成員物件b
),然後再呼叫Big
類的建構函式,生成Big
類物件a1
.
程式碼Big a2 = a1;
中,呼叫Big
類預設的複製建構函式,以a1
為預設複製建構函式的引數,生成物件a2
.