怎么理解struct CRuntimeClass CObject:classCObject ={ szCObject, sizeof(CObject), }

如何理解struct CRuntimeClass CObject::classCObject ={ szCObject, sizeof(CObject), }
侯捷的书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来进一步强调而已