類中的三五原則
拷貝控制操作:拷貝構造、拷貝賦值,移動構造、移動賦值,析構,一般編譯器會自行生成,但對於類中含有指標類成員時,編譯器僅是作了相應的值傳遞,往往達不到使用者要求。
拷貝構造,第一引數是自身類型別,且任何額外的引數都有預設值。其可以發生在以下四種情況
需要定義其析構函式的類同時也需要重新定義拷貝和賦值
需要拷貝定義的類同時往往也需要定義賦值的操作
=default由編譯器生成合成版本的建構函式。=delete表明阻止拷貝,=delete必須出現在函式第一次出現的時候,且可以出現在任何函式上。
另析構函式不能是=delete,由於乙個刪除的析構函式的類無法銷毀,且不能建立該型別的變數或臨時變數。且若乙個類的某個成員具有刪除析構,則這個類自身依舊不能建立變數或臨時變數。但可以建立乙個指標指向該型別,但依舊不能使用delete 銷毀該指標。
#include using namespace std;
const int d = 33;
struct t ;
int main()
所以當由編譯器合成一些拷貝控制成員時,若本類中有資料成員不能以預設的構造、拷貝、賦值或銷毀,相應的其方法也同樣會被編譯器定為=delete。
若乙個有const 成員,若引用成員,編譯器不會為其合成預設建構函式。#include using namespace std;
const int d = 33;
struct s
};struct t
};int main()
t& operator = (t a)
};void swap(t& a, t& b)
int main() ;
void s::display() &&
{ cout << i <
c c 學習筆記 5
每天一點點,不知不覺已經到了第4章了。首先是對於函式的基礎知識的說明,以等同於c 的indexof的函式為例子,對於一些c 的程式設計師,c c 中的字串是乙個char的陣列,但是陣列的書寫方式也是不一樣的,c 中都是型別,而c c 中的確實型別 變數名,雖然一開始都是有點不習慣,但是幾次練習實踐後...
C C學習筆記
1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...
C,C 學習筆記
1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...