筆記:
1.相同型別的類物件通過拷貝建構函式完成整個複製過程。
2.編譯器會自動生成乙個拷貝建構函式,即預設拷貝建構函式,這個建構函式很簡單,僅僅使用老物件的資料成員的值對新物件的資料成員一一賦值。預設拷貝建構函式執行的是淺拷貝。
3.在深拷貝的情況下,對於物件中的動態成員,就不能僅僅簡單的賦值了,而應該重新動態分配空間。簡而言之,當資料成員中有指標時,必須要用深拷貝。
參考:筆記:
1.for(auto a:b)中b為乙個容器,效果是利用a遍歷並獲得b容器中的每乙個值,但是a無法影響到b容器中的元素。
for(auto &a:b)中加了引用符號,可以對容器中的內容進行賦值,即可通過對a賦值來做到容器b的內容填充。
2. auto可以在宣告變數的時候根據變數初始值的型別自動為此變數選擇匹配的型別
參考:筆記:
vector是我們常用的容器,向其中增加元素的常用方法有:emplace_back和push_back兩種。
1.push_bach():
首先需要呼叫建構函式構造乙個臨時物件,然後呼叫拷貝建構函式將這個臨時物件放入容器中,然後釋放臨時變數。
2.emplace_back():
這個元素原地構造,不需要觸發拷貝構造和轉移構造。
參考:
C 學習筆記 2
ref 和out 都是是傳遞引用,out是返回值,兩者有一定的相同之處,不過也有不同點。使用ref 前必須對變數賦值,out不用。out的函式會清空變數,即使變數已經賦值也不行,退出函式時所有 out引用的變數都要賦值,ref引用的可以修改,也可以不修改。下面是使用 out和 ref進行陣列修改的例...
C 學習筆記(2)
定義 namespace a namespace a 系統會自動合併這兩個 使用時在前面加上using namespace a 或者a var來呼叫命名空間a中的變數和函式。wchar t雙位元組型變數,佔據2位元組,而char只佔據1位元組 wchar t wc l 中國 setlocale lc...
c 學習筆記 2
迴圈 while迴圈 計數控制迴圈 counter controlled loop 標記控制的迴圈 sentinel conrolled loop 在寫迴圈的過程中容易出現多一次或者少一次的錯誤 即差一錯誤 off by one error 計算減法 簡單 include include rand ...