c 拷貝建構函式的細節問題

2021-08-09 07:05:24 字數 576 閱讀 8929

1樓:匿名使用者

拷貝建構函式也是要你自己實現的阿,所以你要自己進行變數賦值了。如果你自己不實現,就給你一個預設的實現,就是所有資料拷過去。

拷貝建構函式和賦值操作符不一樣,前者是新建物件,後者是賦值給已有物件。如果你不過載=操作符,編譯器也是給你一個預設的實現,就是把所有資料拷過去。

2樓:匿名使用者

第一個問題,拷貝建構函式函式體的構造,當然要賦值了,比如cexample(const cexample& c)那cexample b(a);

b.data=8,跟a.data無關

const cexample& c就是一個引數,

3樓:對床話雨

實際上這只是體現了c++應用上的靈活性,也就是預設和定製的區別,如果你要求的效果和預設的一樣,就沒有必要使用自定義的。

第一個問題,這是你自己定義的拷貝建構函式,而拷貝的方式可以由你自己定義,你甚至可以在這裡新增計算的**。而預設的拷貝物件,只是簡單的完全拷貝。

第二個問題,一開始就回答了,就你示例的**來看,達到的效果是一樣,都是參照a建立b,a的資料複製到b。

C建構函式過載的問題,C建構函式和解構函式可以過載嗎

你那不叫重灌,叫語法錯誤。你在定義hujiaoqi類的時候已經實現建構函式的過載了,即一專個是無參的建構函式hujiaoqi 一個是有參的hujiaoqi int 類的建構函式只呼叫一次,而且不管有多少個建構函式,屬只會呼叫其中一個,並且是在定義物件的時候自動呼叫的,具體是呼叫哪個根據定義物件時傳入...

C 的預設建構函式

a a2 這是一個函式宣告啊 名稱為 a2,返回值型別為 a 的函式 只是宣告,沒有執行,所以不會輸出 樓主要看清a1和a2具體是做什麼的 建構函式只有在產生物件或者是初始化的時候才會被呼叫預設的也是如此 這裡的a2 其生命形式為 a a2 顯然為一過程函式 返回型別 但這個函式 僅僅是一個宣告而已...

c當建構函式失敗時建構函式內部怎麼處理

1 建構函式想通知外部自己構造失敗,只有拋異常這一個途徑 沒有返回值 2 如果不拋異常,那麼建構函式執行完畢,從語言層面上編譯器認為該物件是正確構造了的,其實構造沒有按預想的進行,所以需要用狀態變數 建構函式引用引數就可以讓外界可以知道構造失敗了。3.如果拋異常標識構造失敗,那麼,所有已經構造好的基...