2015-04-23 3 views
0
virtual BOOL Create( 
    LPCTSTR lpszCaption, 
    DWORD dwStyle, 
    const RECT& rect, //we need to pass a RECT instance 
    CWnd* pParentWnd, 
    UINT nID 
); 

// Create a push button. 
myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
CRect(10,10,100,30), pParentWnd, 1); 

CRect(10,10,100,30) является конструктором, означает ли это, что конструктор возвращает экземпляр?Этот конструктор возвращает экземпляр?

ответ

0

Этот код эквивалентен следующему:

CRect rect = CRect(10,10,100,30); 

// Create a push button. 
myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
rect, pParentWnd, 1); 

Конструктор возвращает экземпляр класса он построен, который используется функцией Create.

+0

Значит, «новый» не является обязательным? – King

+1

Нет, существует принципиальная разница между 'X()' и 'new X()' –

+0

'CRect rect = CRect (10,10,100,30);' выделяет объект с автоматическим временем хранения. Это означает, что он освобождается, когда он покидает область действия. 'new' будет выделять объект с динамической продолжительностью хранения, то есть он должен быть явно освобожден. – lcs

1

// CRect (10,10,100,30) является конструктором ...

Нет, это не так. Это объявление объекта. Он вызывает конструктор, но объект создается локально, а не возвращается конструктором.

Смежные вопросы