怎么理解struct CRuntimeClass CObject:classCObject ={ szCObject, sizeof(CObject), }
如何理解struct CRuntimeClass CObject::classCObject ={ szCObject, sizeof(CObject), }
侯捷的书100页:
//下面这行中为什么有struct,我发现删掉,程序照样运行,是什么语法?
struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, 0, 0 };
------解决方案--------------------
CRuntimeClass是个struct,前面加个struct这是以前C语言的用法,在C++里可以去掉的
------解决方案--------------------
CRuntimeClass 定义的时候就是struct,只不过赋值的时候再加一个struct来进一步强调而已
侯捷的书100页:
MFC.cpp文件中:
static char szCObject[] = "CObject";
//下面这行中为什么有struct,我发现删掉,程序照样运行,是什么语法?
struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, 0, 0 };
static AFX_CLASSINIT _init_CObject(&CObject::classCObject);
CRuntimeClass* CRuntimeClass::pFirstClass = 0;
MFC.H文件中:
struct CRuntimeClass
{
// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
CRuntimeClass* m_pBaseClass;
// CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass; // start of class list
CRuntimeClass* m_pNextClass; // linked list of registered classes
};
class CObject
{
public:
CObject::CObject()
{
}
CObject::~CObject()
{
}
virtual CRuntimeClass* GetRuntimeClass() const;
public:
static CRuntimeClass classCObject;//上面那行看起来像是给这行初始化
};
//下面这行中为什么有struct,我发现删掉,程序照样运行,是什么语法?
struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, 0, 0 };
------解决方案--------------------
CRuntimeClass是个struct,前面加个struct这是以前C语言的用法,在C++里可以去掉的
------解决方案--------------------
CRuntimeClass 定义的时候就是struct,只不过赋值的时候再加一个struct来进一步强调而已