練習13.45
解釋右值引用和左值引用的區別。
解答:左值引用就是常規引用。
右值引用是在c++11之後新增到c++的新特性。
【引用】對於常規引用,我們不能將其繫結到要求轉換的表示式、字面常量或是返回右值的表示式。
【引用】右值引用有著完全相反的繫結特性:我們可以講乙個右值引用繫結到這類表示式上,但是不能講乙個右值引用直接繫結到乙個左值上。
練習13.46
什麼型別的引用可以繫結到下面的初始化器上?
int f();
vectorvi(100);
int? r1 = f();
int? r2 = vi[0];
int? r3 = r1;
int? r4 = vi[0] * f();
解答:
vectorvi(100);
int && r1 = f();
int & r2 = vi[0];
int & r3 = r1;
int && r4 = vi[0] * f();
練習13.47:
略練習13.48
定義乙個vector並在其上多次呼叫push_back。執行你的程式,檢視string被拷貝了多少次。
解答:沒有必要用完整的string定義來做這道題
#include #include #include using namespace std;
class string
string(const char* cstr) :str(cstr){}
string(const string& ori) : str(ori.str)
string str;
};int main()
執行後可以看出,在push_back的次數逐漸增多的時候,拷貝操作也用更多。
第十三章 13 2 1節練習
練習13.23 比較上一節練習中你編寫的拷貝控制成員和這一節中的 確定你理解了你的 和我們的 之間的差異 如果有的話 解答 這道題的解答建立在你對13.22題的實現上面,如果個人實現了,可以進行對比。練習13.24 如果本節中的hasptr版本未定義析構函式,將會發生什麼?如果未定義拷貝建構函式,將...
第十三章 13 1 6節練習 13 2節練習
練習13.18 定義乙個employee類,它包含雇員的姓名和唯一的雇員證號。為這個類定義預設建構函式,以接受乙個標識雇員姓名的string的建構函式。每個建構函式應該通過遞增乙個static資料成員來生成乙個唯一的證號。解答 class employee int employee id 0 emp...
第十三章 併發
13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...