第十三章 13 6 1節練習

2021-06-25 15:32:13 字數 969 閱讀 1405

練習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 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...