指针或变量?
问题描述:
最近,我学习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的惊人!
我想知道一些有关基类结构的规则。谢谢!
答
在C++中,类和结构除了与成员的继承和访问级别有关的默认行为之外都是相同的。
C++类 默认继承=私人 默认访问级别成员变量和函数=私人
C++结构 默认继承=公共 默认访问级别成员变量和函数=公共
总之,是的,类可以从C++中的struct继承。
@KirilKirov RECT'是Win32中的'struct' – 2013-03-26 13:05:50
IIRC正确地说,这和'struct base'没有任何关系。如果你看'CRect',我想你会看到这个方法'运算符LPRECT(){return this; }'这是调用操作符来自动将CRect转换为LPRECT的操作符。是的,它是一个巧妙的技巧,几乎可以在任何时候运行。 – john 2013-03-26 13:06:23