練習7.27
給你自己的screen類新增move、set和display函式,通過指向下面的**檢驗你的類是否正確。
screen myscreen(5, 5, 'x');
myscreen.move(4.0).set('#').display(cout);
cout << "\n";
myscreen.display(cout);
cout << "\n";
解答:這裡使用隨書待的screen,會發現兩次的結果是一樣的。
練習7.28
如果move、set和display函式的額返回值不是screen&而是screen,則在上乙個練習中將會發生什麼情況?
解答:第乙個顯示語句不會重新整理screen顯示
第二個顯示語句會重新整理screen顯示(和上一題一樣)
練習7.19
略練習7.30
通過this指標使用成員的做法雖然合法,但是有點多餘。討論顯式使用指標訪問成員的優缺點。
解答:一般使用到this,都是類的成員函式(非友元函式),可以對類中的成員隨意訪問。
其實使不使用this對編譯器來說沒什麼影響,主要是程式設計師在維護**上的代價。
優點是你通過this可以很容易通過ide的智慧型感知功能來定位類的成員,
缺點是你應該為此程式的所有成員的引用都用this來是**看起來一致。
第七章 7 2節練習
練習7.16 在類的定義中對於訪問說明符出現的位置的次數由限定嗎?如果有是什麼?什麼樣的成員應該定義在public說明符之後,什麼樣的成員應該定義在private說明之後?解答 對次數和位置沒有嚴格的限制。簡單來說,想讓外部訪問到的成員應該定義在public之後,不想讓外部訪問的到的成員應該定義在p...
第七章 7 5 3節練習
7.5.2節的練習,可以自行選擇練習。練習7.43 假定有乙個名為nodefault的類,它有乙個接受int的建構函式,但是沒有預設建構函式。定義類c,c有乙個nodefault型別的成員,定義c的預設建構函式。解答 struct nodefault int data struct c nodefa...
第七章 7 5 4節練習
練習7.47 說明接受乙個string引數sales data建構函式是否應該是explicit的,並解釋這樣做的優缺點。解答 應該宣告成explicit,這樣做能讓物件構造的更加明確。缺點可能就是,在構造物件的時候,不注意會出現莫名的錯誤。練習7.48 假定sales data的建構函式不是exp...