我對構造函數鏈的理解是,當一個類中有多個構造函數(重載構造函數)時,如果其中一個構造函數試圖調用另一個構造函數,那麼這個過程稱爲CONSTRUCTOR CHAINING,它在C++中不受支持。 最近我碰到這一段就在閱讀在線素材....它是這樣的......C++構造函數鏈
你可能會發現自己在你想寫一個成員函數的情況重新初始化類回默認值。因爲你可能已經有了這樣的構造函數,所以你可能會試圖從你的成員函數中調用構造函數。如前所述,鏈接構造函數調用在C++中是非法的。你可以從你的函數中的構造函數複製代碼,這將工作,但會導致重複的代碼。在這種情況下,最好的解決方案是將代碼從構造函數移動到新函數,並讓構造函數調用您的函數來完成初始化數據的工作。
調用構造函數的成員函數是否也在構造函數鏈中? 請在C++中關注這個主題。
我說不是,這是一個非不合邏輯的文章說,構造函數鏈是非法的,他說,一些任意的成員函數(不一定是一個構造函數)可能會認爲它要調用構造函數來重置後立即價值。但是誰知道,你還沒有引用這篇文章或引用它描述構造函數鏈的地方,所以也許它在別處已經描述過的一些不尋常的意義上使用它。 –
這不是非法的。從成員調用構造函數的效果是創建一個適用於該構造的臨時對象,而不是創建該調用的「this」對象。 –
@Amardeep:同意,這將是更準確的說,構造函數鏈是C++ 03「不可能的」,而不是「非法」。沒有語法來描述這樣做。正如你所說,通過調用構造函數的正常定義與構造函數鏈並不完全相同。 –