
C++ Language
文章平均质量分 74
dog_in_yellow
这个作者很懒,什么都没留下…
展开
-
泛化仿函数用法及参数绑定的问题
《C++设计新思维》一书里的泛化仿函数从Command模式讲起。Command模式主要用来降低系统中命令的调用者和执行者间的依存性。设计模式的书里面一般都采用多态的机制,调用者持有Command对象的基类接口,在此处我们称为Command接口,Command接口不知道自己将被用于执行什么命令,一般只包含一个触发命令执行的虚函数,假设名为Excute。各种不同的实际执行命令的Command原创 2007-02-15 12:34:00 · 1508 阅读 · 0 评论 -
若使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual
在多态的设计中,如果准备使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual,否则程序将无法按预期工作。几种写法产生的运行结果如下:1、基类和派生类析构任一个为virtual,另一个非virtual,程序行为未定义,一般会产生运行时错误。2、基类和派生类析构都为非virtual,只有基类的析构被调用,派生类的析构不会被调用,一般会引起内存泄露。3、基类和派原创 2007-02-15 12:44:00 · 2819 阅读 · 1 评论 -
VC++字节对齐总结
字节对齐指的是定义一个变量(包括常量,以下出现的变量不再特别说明)时,该变量在计算机内存区域的起始地址按照多少的倍数来存放。比如按4对齐,则起始地址必须是4的倍数。字节对齐影响着计算机指令系统层读写变量的速度。这一点在计算机体系结构和汇编语言的书里面一般都有较详细的说明,在此不多作描述。主要总结一下编程时字节对齐的设置。 C++提供了指令来设置对齐方式。一个是pack pragma,该指原创 2007-03-10 23:39:00 · 4499 阅读 · 0 评论 -
观察者模式
观察者模式的意图是:定义对象间的一种关系,当一个对象的状态发生变化时,所有依赖于它的对象都能得到通知。 你可以考虑这样一种应用,当一个论坛注册了个新用户后,论坛程序自动发一个站内欢迎消息和email。以后可能还有需求说同时也用手机发一条短信等等。在这里面,新用户是一个对象,发站内欢迎消息是一个对象,发email也是一个对象,还有发手机短信也可以是个对象。当新用户注册时(状态改变)原创 2008-01-13 11:35:00 · 869 阅读 · 0 评论 -
使用DLL在多个进程间共享全局变量
默认情况下,同一个程序启动多个进程,它们各自的变量值是不会相互影响的。第二个实例启动后,在修改全局变量的时候,系统会运用内存管理系统copy- on-write的特性来防止修改了第一个实例的数据,即系统会再分配一些内存,并将全局变量复制到这块内存中,每个实例使用自己的内存空间上的数据而互不影响。有时候我们想在多个进程间共享数据,windows提供了这种方法,就是创建自己的共享数据节,原创 2008-01-13 10:03:00 · 6542 阅读 · 1 评论 -
VC中调用WebService的超时设置
在VS2003非托管代码中调用WebService的方法比较简单,通过在项目中添加Web引用,输入WebService的网址,向导就会自动生成一个WebService类,该类包含所引用WebService的接口,并且从CSoapSocketClientT template typename TClient = CSoapSocketClientT >class CGPSSer原创 2008-01-13 10:05:00 · 2118 阅读 · 0 评论 -
定界加锁模式
在多线程的程序中,当一个资源被多个线程共同访问时,就需要对该资源的访问进行加锁。加锁的操作不同的操作系统实现方式可能不同,如windows操作系统用CRITICAL_SECTION,Linux系统用pthread_mutex_t。尽管如此,对锁的操作却大致相同,一般有以下几个操作:初始化锁、加锁、解锁、删除锁。初始化锁和删除锁就像分配和释放内存一样,第一次使用前和最后一次使用后分别做一次原创 2008-01-13 11:31:00 · 1349 阅读 · 0 评论 -
windows平台上向64位移植c/c++的变量类型大小变化
windows平台上编译64位程序变量类型大小变化:类型 用32位编译的大小 用64位编译的大小char 1 1short 2 2int 4原创 2008-01-13 10:00:00 · 1045 阅读 · 0 评论 -
包装模式
相信用C++的朋友都喜欢封装自己的类,我也是一样。为什么要封装呢?因为封装能给我们未来的工作带来好处:1、通过封装可以把现有接口改变成自己比较习惯的接口来使用;2、通过封装可以把相关的功能集中到一起,便于使用;3、通过封装可以把我们所需要使用的功能子集从原有的众多功能中分离出来,便于记忆与使用;4、封装可以使得我们写兼容不同平台的代码变得更加简洁;5、通过封装可以避免以后重复写繁琐的相同的代码,提原创 2008-01-13 11:26:00 · 1294 阅读 · 0 评论