練習13.18
定義乙個employee類,它包含雇員的姓名和唯一的雇員證號。為這個類定義預設建構函式,以接受乙個標識雇員姓名的string的建構函式。每個建構函式應該通過遞增乙個static資料成員來生成乙個唯一的證號。
解答:
class employee;
int employee::id = 0;
employee::employee()
employee::employee(const string &name)
大概就是這樣吧。
練習13.19
你的employee類需要定義它自己的拷貝控制成員嗎?如果需要,為什麼?如果不需要,為什麼?實現你認為employee需要的拷貝控制成員。
解答:就依我上面的類實現來說,是不需要的。
因為,編譯器會自動給我們生成乙個。
這裡,需要參考一下450頁中,「合成的拷貝控制成員可能是刪除的」章節的內容,確定一下自己定義的類中的拷貝控制成員是否會被刪除。
練習13.20
解釋當我們拷貝、賦值或銷毀textquery和queryresult類(參見12.3節,430頁)物件時會發生什麼。
解答:這裡也是在考察合成拷貝控制成員的概念,注意一下書中的note就可以了:
本質上,當不可能拷貝、賦值或銷毀類的成員時,類的合成拷貝控制成員就被定義為刪除的。
練習13.21
你認為textquery和queryresult類需要定義他們自己版本的拷貝控制成員嗎?如果需要,為什麼?如果不需要,為什麼?實現你認為這兩個類需要的拷貝控制操作。
解答:在我看來這兩個類也是沒有必要去定義其拷貝控制成員的。
這兩個類是配合使用對文字進行查詢的,在程式設計的角度,拷貝操作沒有必要。
對於不同的文字,或者不同的流只需要新建立類物件就可以了,無需複製操作。
練習13.22
假定我們希望hasptr的行為想乙個值。即,對於物件所指向的string成員,每個物件都有乙份自己的拷貝。我們將在下一節介紹拷貝控制成員的定義。但是,你已經學習了定義這些成員所需要的所有知識。在繼續學習下一章之前,為hasptr編寫拷貝建構函式和拷貝賦值運算子。
解答:完全可以參考453頁下面的定義。
這裡需要注意的就是拷貝運算子的定義,需要將指標指向乙個新位址,並且將原有的記憶體進行釋放,以免造成記憶體洩露。
第十三章 13 2 1節練習
練習13.23 比較上一節練習中你編寫的拷貝控制成員和這一節中的 確定你理解了你的 和我們的 之間的差異 如果有的話 解答 這道題的解答建立在你對13.22題的實現上面,如果個人實現了,可以進行對比。練習13.24 如果本節中的hasptr版本未定義析構函式,將會發生什麼?如果未定義拷貝建構函式,將...
第十三章 13 6 1節練習
練習13.45 解釋右值引用和左值引用的區別。解答 左值引用就是常規引用。右值引用是在c 11之後新增到c 的新特性。引用 對於常規引用,我們不能將其繫結到要求轉換的表示式 字面常量或是返回右值的表示式。引用 右值引用有著完全相反的繫結特性 我們可以講乙個右值引用繫結到這類表示式上,但是不能講乙個右...
第十三章 13 2 工作管理
1.把程序放入後台 a.執行的命令最後面加上 b.執行完命令後按下ctrl z快捷鍵 上述兩種方法的區別 a方法放入後台並執行,b方法是放入後台暫停執行 2.檢視後台的工作 jobs l 選項 l 顯示工作pid 注意 號表示最近乙個放入後台的工作,也是工作恢復時,預設恢復的工作。號代表倒數第二個放...