1。 CObject Object;
    CObjiet *object = new Cobject();
    问题:两种分配对象的差异,和堆分配代码最后的括号的作用?
2。CObject::IsKindOf (const CRuntimeClass*pclass)const
    问题:第一个const的作用?
3。  CRuntimeClass* CRuntimeClass::pFirstClass = NULL;
    pFirstClass是static成员变量为什么会用::?
同理:struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, NULL, NULL };
     classCObject的定义在CObject类中:
      static CRuntimeClass classCObject;
   不是对象成员吗?

解决方案 »

  1.   

    这个作用第二个const不是可以保证的吗
      

  2.   

    1.一个是在堆里一个是在栈里,new的那个需要释放内存的。
      

  3.   

    1.一个是在堆里一个是在栈里,new的那个需要释放内存的。
      

  4.   

    第二个const只能保证类的成员变量在该函数中不被修改.
      

  5.   

    1。 
    CObject Object;  若是全局变量,则在系数的数据区分配,
    函数内则在栈内分配。
    CObjiet *object = new Cobject();
    在堆内分配,最后的括号的作用是构造函数的初始化
      

  6.   

    static 变量是属于类,使用的时候要和 该 类一起使用啊!
      

  7.   

    3。 
    > CRuntimeClass* CRuntimeClass::pFirstClass = NULL;
    >    pFirstClass是static成员变量为什么会用::?
    static成员变量必须在外部分配空间,::是标准C++用法,用于说哪个类的成员>同理:struct CRuntimeClass CObject::classCObject =
    >{ szCObject, sizeof(CObject), 0xffff, NULL, NULL };
    >    classCObject的定义在CObject类中:
    >      static CRuntimeClass classCObject;
    >   不是对象成员吗?也是对象的静态成员
      

  8.   

    CObject Object;  若是全局变量,则在系数的数据区分配,
    函数内则在栈内分配。
    CObjiet *object = new Cobject();
    在堆内分配,最后的括号的作用是构造函数的初始化
      

  9.   

    to  lanfengjiyue(jincheng):
    你大概在第三条不明白吧!类的静态成员在程序内只有一份拷贝,
    而类的对象则拥有其他的数据成员,有多少个对象有多少份拷贝,
    正因为类的静态成员在程序内只有一份,所以可以静态初始化。别急,兄弟,再去C++教材里翻翻这一部分有关静态成员初始化的内容
      

  10.   

    这样回答你满意吗?
    1。第一个是自动变量,也就是说过了生存期就会自动死掉!
       第二个是堆对象,不会自动的死,你得用DELETE把它干掉
       至于()是语法问题,你可以在这里放参数。
    2。第一个CONST的作用是:使你不能通过pclass来修改它所指向的对象,也就是说你只能读取该对象的信息,不能修改它
       如对*pclass赋值是不允许的。
        第二个CONST的作用是说明该函数不改变数据成员的值,只用这样的成员函数才可以访问常数据成员
    3。没错 pFirstClass是静态的,但你不要忘了,静态数据成员需要初始化的classCObject当然也是!!建议你看看C++书多看看就明白了!!
      而CRuntimeClass* CRuntimeClass::pFirstClass = NULL;就是进行初始化
    初始化时类名+::是不可少的,因为静态成员是属于类的,而不是对象的,你如果不用类名进行说明,怎么知道该静态成员属于那个类呢?
      

  11.   

    这样回答你满意吗?
    1。第一个是自动变量,也就是说过了生存期就会自动死掉!
       第二个是堆对象,不会自动的死,你得用DELETE把它干掉
       至于()是语法问题,你可以在这里放参数。
    2。第一个CONST的作用是:使你不能通过pclass来修改它所指向的对象,也就是说你只能读取该对象的信息,不能修改它
       如对*pclass赋值是不允许的。
        第二个CONST的作用是说明该函数不改变数据成员的值,只用这样的成员函数才可以访问常数据成员
    3。没错 pFirstClass是静态的,但你不要忘了,静态数据成员需要初始化的
      而CRuntimeClass* CRuntimeClass::pFirstClass = NULL;就是进行初始化
    初始化时类名+::是不可少的,因为静态成员是属于类的,而不是对象的,你如果不用类名进行说明,怎么知道该静态成员属于那个类呢?classCObject当然也是!!建议你看看C++书多看看就明白了!!