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;
不是对象成员吗?
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秒60个包 每个20字节, 1秒30个包 每个40字节, 性能对比
- *************************请提供一些socket编程阻塞方式的代码*********************
- 如何让CSplitterWnd拆分后的子窗口还带有标题栏?
- 三维矢量显示
- 打开多个选中文件
- 已经得到了HBITMAP,如果才能把HBITMAP指向的位图转换成COPY到缓冲区里?
- 如何检测某个web站点是否存在?
- 关于用CSplitterWnd类创建的无文档关联的多个视图之间的通讯问题?
- 关于实现利用网络实现"请示","合同"批复,需要注意的关键问题的讨论!
- html help(*.chm)如何制作?
- 怎样为我的控件设计一个指向imagelist的属性(或者其他ocx控件) ???
- 一个定制文件打开 对话框的问题?
CObject Object; 若是全局变量,则在系数的数据区分配,
函数内则在栈内分配。
CObjiet *object = new Cobject();
在堆内分配,最后的括号的作用是构造函数的初始化
> CRuntimeClass* CRuntimeClass::pFirstClass = NULL;
> pFirstClass是static成员变量为什么会用::?
static成员变量必须在外部分配空间,::是标准C++用法,用于说哪个类的成员>同理:struct CRuntimeClass CObject::classCObject =
>{ szCObject, sizeof(CObject), 0xffff, NULL, NULL };
> classCObject的定义在CObject类中:
> static CRuntimeClass classCObject;
> 不是对象成员吗?也是对象的静态成员
函数内则在栈内分配。
CObjiet *object = new Cobject();
在堆内分配,最后的括号的作用是构造函数的初始化
你大概在第三条不明白吧!类的静态成员在程序内只有一份拷贝,
而类的对象则拥有其他的数据成员,有多少个对象有多少份拷贝,
正因为类的静态成员在程序内只有一份,所以可以静态初始化。别急,兄弟,再去C++教材里翻翻这一部分有关静态成员初始化的内容
1。第一个是自动变量,也就是说过了生存期就会自动死掉!
第二个是堆对象,不会自动的死,你得用DELETE把它干掉
至于()是语法问题,你可以在这里放参数。
2。第一个CONST的作用是:使你不能通过pclass来修改它所指向的对象,也就是说你只能读取该对象的信息,不能修改它
如对*pclass赋值是不允许的。
第二个CONST的作用是说明该函数不改变数据成员的值,只用这样的成员函数才可以访问常数据成员
3。没错 pFirstClass是静态的,但你不要忘了,静态数据成员需要初始化的classCObject当然也是!!建议你看看C++书多看看就明白了!!
而CRuntimeClass* CRuntimeClass::pFirstClass = NULL;就是进行初始化
初始化时类名+::是不可少的,因为静态成员是属于类的,而不是对象的,你如果不用类名进行说明,怎么知道该静态成员属于那个类呢?
1。第一个是自动变量,也就是说过了生存期就会自动死掉!
第二个是堆对象,不会自动的死,你得用DELETE把它干掉
至于()是语法问题,你可以在这里放参数。
2。第一个CONST的作用是:使你不能通过pclass来修改它所指向的对象,也就是说你只能读取该对象的信息,不能修改它
如对*pclass赋值是不允许的。
第二个CONST的作用是说明该函数不改变数据成员的值,只用这样的成员函数才可以访问常数据成员
3。没错 pFirstClass是静态的,但你不要忘了,静态数据成员需要初始化的
而CRuntimeClass* CRuntimeClass::pFirstClass = NULL;就是进行初始化
初始化时类名+::是不可少的,因为静态成员是属于类的,而不是对象的,你如果不用类名进行说明,怎么知道该静态成员属于那个类呢?classCObject当然也是!!建议你看看C++书多看看就明白了!!