week3
#1
描述
下面程序輸出的結果是:
0
5
請填空:
1 #include <iostream> 2 using namespace std; 3 class A { 4 public: 5 int val; 6 // 在此處補充你的代碼 7 }; 8 main() { 9 A a; 10 cout << a.val << endl; 11 a.GetObj() = 5; 12 cout << a.val << endl; 13 }
要寫一個GetObj的成員函數,他的返回值是val,而成員函數返回成員變量的值,要用int&類型作為返回值,否則返回的是val的副本
所以這樣寫
1 int& GetObj() { return val; }
#2
描述
下面程序的輸出是:
10
請補足Sample類的成員函數。不能增加成員變量。
1 #include <iostream> 2 using namespace std; 3 class Sample{ 4 public: 5 int v; 6 Sample(int n):v(n) { } 7 // 在此處補充你的代碼 8 }; 9 int main() { 10 Sample a(5); 11 Sample b = a; 12 cout << b.v; 13 return 0; 14 }
本來想實現調用復制構造函數時,能將v累加:新創的對象b的v能加上給他初始化的對象的v;但是新創建的對象沒有v值,這種想法似乎只有賦值函數才可實現(即,已經初始化過的對象),所以放棄之,寫成這樣(但自己感覺不妥):
1 Sample(const Sample& n) 2 { 3 v = 2*n.v; 4 }
#3
描述
下面程序的輸出結果是:
5,5
5,5
請填空:
1 #include <iostream> 2 using namespace std; 3 class Base { 4 public: 5 int k; 6 Base(int n):k(n) { } 7 }; 8 class Big { 9 public: 10 int v; Base b; 11 // 在此處補充你的代碼 12 }; 13 int main() { 14 Big a1(5); Big a2 = a1; 15 cout << a1.v << "," << a1.b.k << endl; 16 cout << a2.v << "," << a2.b.k << endl; 17 return 0; 18 }
由14行知這里要創建Big類的構造函數和復制構造函數
注意到Big類有數據成員Base b,於是乎,必須要用參數列表進行初始化
1 Big(int v_):v(v_), b(v_) 2 { 3 } 4 5 Big(const Big& a):v(a.v),b(a.b.k) 6 { 7 }
用參數列表初始化成員的情況(2,3不是很懂,待嘗試):1.需要初始化的數據成員是類的對象;2.需要初始化cosnt修飾的類成員;3.需要初始化引用成員的數據
自己做的時候遇到很多不懂的問題,都是問囧陽的,小白進步中,感謝陽神!感謝耐心!
