【发布时间】:2013-03-16 06:57:30
【问题描述】:
最近在学习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或&rect(CRect rect)作为参数,太棒了!
我想知道一些关于 struct base 类的规则。谢谢!
【问题讨论】:
-
@KirilKirov
RECT是 Win32 中的struct -
IIRC 正确,这与“结构基础”没有任何关系。如果您查看
CRect,我想您会看到此方法operator LPRECT() { return this; },它是调用转换运算符以自动将CRect 转换为LPRECT。是的,这是一个巧妙的技巧,几乎一直有效。
标签: c++ pointers struct base-class