2014-11-03 66 views
-1

例如:什麼是「新ClassName(this);」意思?

// name.h 
Class A { 
    private: 
      QLabel *statusLabel; 
}; 

// name.cpp 
statusLabel = new QLabel(this); 

這是構造函數調用?我不這麼認爲,但如果是 - 爲了什麼? statusLabel已經是QLabel-Class對象。

+1

'statusLabel'是一個**指針**到'QLabel'。它不是一個'QLabel'對象 – Jarod42 2014-11-03 14:44:53

回答

0

這是構造函數調用嗎?

這是一個新表達式,用於創建動態對象。它

  • 分配一些內存;
  • 通過調用構造函數this(指向當前對象的指針)作爲參數在該內存中創建一個QLabel對象;
  • 返回指向新對象的指針,該對象指定給statusLabel

statusLabel已經QLabel -Class對象。

不,*表示它是一個指針,而不是一個對象。直到您將其指定爲指向某個對象(如該行代碼所做的那樣),它並不代表任何對象。分配後,您可以使用它訪問它指向的對象。

0
statusLabel = new QLabel(this); 

編輯,以更精確: -

所以,你正在使用新的表達方式分配內存間接稱之爲QLabel的構造與此作爲參數。

1

在標題中,您指出類A有一個指向QLabel的指針。在cpp文件中,您實際上創建了QLabel對象。 「this」是指向創建QLabel的類A的對象的指針,指示此對象是QLabel的父對象。但是,類A不是QWidget,所以它不應該編譯。