QObject為什麼禁用複製建構函式和賦值運算子?

2021-10-06 17:28:39 字數 578 閱讀 4724

qobject禁用複製建構函式和賦值運算子源於它的性質:

可能具有唯一的qobject :: objectname。

qt物件可以擁有自己的名稱,objectname屬性儲存物件的名稱。

那麼複製乙個qt物件,如何處理新的物件的名字?

在物件層次結構中具有位置。

qobjects將自己組織在物件樹中。

那麼複製乙個qt物件,新的物件應位於何處?

可以連線到其他qt物件,以向它們發出訊號或接收它們發出的訊號。

qobjects可以connect到其他物件。

那麼複製乙個qt物件,應該如何將這些連線轉移到新的物件中?

可以在執行時新增未在c ++類中宣告的新屬性。

那麼複製乙個qt物件,原始物件中新增的屬性是否應該複製到新物件?

由於這些原因,應將qt物件視為身份而不是值。因此,qobject的拷貝建構函式和賦值操作符是禁用的。

為什麼需要複製建構函式?

複製建構函式由編譯器隱式呼叫,主要的用途是 1 根據另乙個同型別的物件現實或隱式初始化乙個物件 2 複製乙個物件,將它作為實參傳給乙個函式 3 從函式返回時複製乙個物件 4 初始化順序容器中的元素 5 根據元素初始化式列表初始化陣列元素 類型別物件的初始化 直接初始化和複製初始化 根據c prime...

為什麼要用虛析構函式

1 問題引出 為什麼要使用虛析構函式?class a 父親 int main 我們知道在delete p 中 delete 操作符,會呼叫物件的析構函式,但是這裡傳入的是父類物件指標,所以delete 此時並不知道應該呼叫哪個析構函式,保險起見則只呼叫父類的析構函式,也就是說如果沒有使用虛析構函式,...

為什麼需要虛析構函式

這樣做是為了當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫。class clxbase virtual clxbase virtual void dosomething class clxderived public clxbase clxderived void dosomet...