各位能否解释一下在《MFC深入浅出》里的一些代码?如下: static就是保证只有一个实例,不管你申请了多少个CMfxTrace的实例或对象,但是只有一份该函数的拷贝。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static修饰的函数在没有CMfxTrace的实例的时候也可以调用 如果不声明为static,则每一个对象都有分别不同的CMfxTrace对象,这样将起不到tracer的作用啦! static修饰的函数在没有CMfxTrace的实例的时候也可以调用.不管你申请了多少个CMfxTrace的实例或对象,但是只有一份该函数的拷贝 谢谢回答。可是我还是不明白在一个类被定义的时候就可以包含自己吗?如上面的static CMfxTrace theTracer;被包含在类声明中。这样做的目的是什么? 我接着你上面的疑问回答:1、一各类可以被定义为自己本身的成员,你还记得C中的链表吗?那个结构指针不就是自己结构本身吗?一个抽象类型被编译时它只为自己的成员按照成员相应的类型分配相应的内存空间,你在static CMfxTrace theTracer前一精声明了CMfxTrace是一个Class所以编译器在此只为theTracer分配一个Class变量的大小的空间,所以这是可行的。2、static CMfxTrace theTracer被包含在类的声明中是为了实例化CMfxTrace类型的一个变量,从上面的声明可以看出它的构造函数是私有的,所以你在未部无法实例化此类,这样这个例子就能做到,要实例化CMfxTrace必须调用Init函数,而一旦调用了Init那么着各类的功能就被限制在trace的作用范围内了,他不能做别的工作,只能作为一个afxDump.m_pFile 被使用。 static就是保证只有一个实例,不管你申请了多少个CMfxTrace的实例或对象,但是只有一份该函数的拷贝。 如何解决VS2005中_variant_t字符串的中文显示为乱码的问题,在线等! MFC中如何将一个数字转换成一个字符? 如何发送一个http命令得到网络摄像机的图像文件 vc下有没有专门的日志管理模块 没分啦!大家帮我一下啊! help!!大侠们,如何redirect外部程序的webBrowser中的URL? 大讨论:如何删除一个CString类型变量未尾的换行符\r\n how to 怎样在线程中修改状态栏 急!!!:vc中浮动菜单的问题 封面渐变 SDI程序中,如何在MainFrame里,得到文档的指针? 菜菜鸟的问题关于菜单项的控制
可是我还是不明白在一个类被定义的时候就可以包含自己吗?如上面的
static CMfxTrace theTracer;被包含在类声明中。这样做的目的是什么?
1、一各类可以被定义为自己本身的成员,你还记得C中的链表吗?那个结构指针不就是自己结构本身吗?一个抽象类型被编译时它只为自己的成员按照成员相应的类型分配相应的内存空间,你在static CMfxTrace theTracer前一精声明了CMfxTrace是一个Class所以编译器在此只为theTracer分配一个Class变量的大小的空间,所以这是可行的。
2、static CMfxTrace theTracer被包含在类的声明中是为了实例化CMfxTrace类型的一个变量,从上面的声明可以看出它的构造函数是私有的,所以你在未部无法实例化此类,这样这个例子就能做到,要实例化CMfxTrace必须调用Init函数,而一旦调用了Init那么着各类的功能就被限制在trace的作用范围内了,他不能做别的工作,只能作为一个afxDump.m_pFile 被使用。
对象,但是只有一份该函数的拷贝。