2013-03-26 125 views
-1

最近,我學習MFC,以下代碼困擾了我很多:指針或變量?

class CRect : public tagRECT 
{ 
public: 

// Constructors 

// uninitialized rectangle 
CRect(); 
// from left, top, right, and bottom 
CRect(int l, int t, int r, int b); 
// copy constructor 
CRect(const RECT& srcRect); 
// from a pointer to another rect 
CRect(LPCRECT lpSrcRect); 
// from a point and size 
CRect(POINT point, SIZE size); 
// from two points 
CRect(POINT topLeft, POINT bottomR 
... 

的基類的CRect的是一個結構!我從來沒有學過這種如果我打電話

CWnd :: GetClientRect(LPRECT lpRect);

我可以使用RECT&矩形(的CRect RECT)作爲parameter.It的驚人!

我想知道一些有關基類結構的規則。謝謝!

+0

@KirilKirov RECT'是Win32中的'struct' – 2013-03-26 13:05:50

+0

IIRC正確地說,這和'struct base'沒有任何關係。如果你看'CRect',我想你會看到這個方法'運算符LPRECT(){return this; }'這是調用操作符來自動將CRect轉換爲LPRECT的操作符。是的,它是一個巧妙的技巧,幾乎可以在任何時候運行。 – john 2013-03-26 13:06:23

回答

5

在C++中,類和結構除了與成員的繼承和訪問級別有關的默認行爲之外都是相同的。

C++類 默認繼承=私人 默認訪問級別成員變量和函數=私人

C++結構 默認繼承=公共 默認訪問級別成員變量和函數=公共

總之,是的,類可以從C++中的struct繼承。

+0

好的,我知道你的意思。但是我的問題是爲什麼rect等於&rect? – coqer 2013-03-26 13:29:12

+0

很簡單看看http://msdn.microsoft.com/en-us/library/78y4kakb(v=vs.80).aspx,如果你有任何問題,請分享... – Saqlain 2013-03-26 17:22:55