2013-03-26 108 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