C 建構函式的default和delete

2021-09-26 21:15:11 字數 299 閱讀 1781

c++11中,當類中含有不能預設初始化的成員變數時,可以禁止預設建構函式的生成,

myclass()=delete;//表示刪除預設建構函式

myclass()=default;//表示預設存在建構函式

當類中含有不能預設拷貝成員變數時,可以禁止預設建構函式的生成,

myclass(const myclass&)=delete;//表示刪除預設拷貝建構函式,即不能進行預設拷貝

myclass & operatir=(const myclass&)=delete;//表示刪除預設拷貝建構函式,即不能進行預設拷貝

default建構函式

effective c 中說到的default建構函式,指的是乙個可被呼叫而不帶任何實參者。這樣的建構函式要不沒有引數,要不就是每個引數都有預設值。如果建構函式被宣告為explict,這可阻止它們被用來執行隱式型別轉換,但它們仍可被用來進行顯示型別轉換。class b void dosomethin...

C 的建構函式和拷貝建構函式

編譯器自動生成的構造僅僅做讓編譯能通過的事情,它不會初始化成員變數。編譯器並不會自動生成預設的建構函式和拷貝建構函式,僅僅在它需要的時候。沒錯!對於下面的類 class test 編譯器不會自動生成建構函式,因為沒有字段需要初始化。很多時候都需要深拷貝,這時需要自己定義copy constructo...

d的複製建構函式

本文件提出了複製建構函式,它是後複製函式的替代方法.複製建構函式消除了對後複製的需求,並修復了其缺陷和固有限制.還討論了演進和向後相容性.本節重點介紹了後複製存在問題,並說明了為什麼複製建構函式比後複製好.無法有意義地過載或限定後複製函式.但,編譯器不會拒絕限定器應用,如下所示 構 a 構 b 構 ...