在<<深入浅出MFC>>第99页IMPLEMENT_DYNAMIC(CView,CWnd)宏 转换出来的代码是:static char _lpszCView[]="CView";
CRunTimeClass CView::classCView={
       _lpszCView,sizeof(CView),0xFFFF,NULL,&CWnd::classCWnd,NULL};
static AFX_CLASSINIT _init_CView(&CView::classCView);
CRunTimeClass* CView::GetRunTimeClass() const
       {return &CView::classCView;}现在有点疑问:
1:   _lpszCView为什么要定义为static
2:   _init_CView为什么要定义为static
3:   定义一个AFX_CLASSINIT结构有什么含义吗?(如果只是为了将CView::classCView加入类型型录表,也没必要定义一个结构,直接加入也可以的嘛)谢谢!

解决方案 »

  1.   

    static 因为它不能用着用着就消失了,必须要一直存在。AFX_CLASSINIT 么……嗬嗬,MFC就是这样绕来绕去的,可能是为了以后的改造……做人也得如此阿……
      

  2.   

    定义为static是为了:不管有没有产生此类的对象也能用他来构造一个继承关系链,假如不用static的话,不是断开了吗?
      

  3.   

    1。你先看看这本书前面讲到的static的意义是什么,你自己就明白了,这本书前面已经讲的非常清楚了。
    2。请你仔细分析这个结构,具体我忘记结构的原型了,所以无法回答
      

  4.   

    I think the use of "static" implies that these informations are class-specific, but not object-specific.