c/c++
文章平均质量分 57
leonwei
腾讯专家游戏开发工程师(T12/T4-1) 《黎明觉醒》引擎组组长
展开
-
字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码
字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码http://www.regexlab.com/zh/encoding.htm1. 编码问题的由来,相关概念的理解1.1 字符与编码的发展从计算机对多国语言的支持角度看,大致可以分为三个阶段: 系统内码说明系统阶段一ASCII计算机刚开始只支持英语,转载 2013-08-28 10:35:53 · 4274 阅读 · 0 评论 -
一个€引起的混乱——关于字符编码
上周游戏突发一个严重的漏洞,玩家通过在聊天世界频道发送€符号,会导致接下来发言的玩家看到的内容混乱,这种捣乱的行为,我立即去查了一下,发现这是引擎在处理字符编码时的一个错误导致的,这个错误非常隐蔽,以至于我也是开始的时候看上去一切非常正常。 错误是这样出现的,首先程序采用多字符集,即ANSI编码,在多字符编码下,用单字节表示英文编码,用两个字节表示非英文编码,程序中为了显示一段文字,先原创 2013-08-28 10:35:30 · 4844 阅读 · 0 评论 -
Something More about "new" &"delete" in C++
new和delete都是C++中最基本的词汇,每天的代码都反复的与他们打交道,对他们最基本的认识就是分配和释放内存,最开始我认为他们就是C++版的malloc和free,但是其实内有玄机,除了分配内存,还可以用他们实现什么,new和delete可以被重载么原创 2013-08-05 12:18:47 · 1794 阅读 · 0 评论 -
vc中异常捕捉的最后一道屏障-SetUnhandledExceptionFilter
在C++中定义了很多异常捕捉机制,但是在VC中在win平台上有一个更高层的异常处理机制,函数SetUnhandledExceptionFilter,这个函数很有用,它是异常捕捉的最后一道屏障。它有这样的规则,对于未捕捉的异常并且未在调试状态下(通常就是只在release中),将自动调用这里面的异常处理函数。默认的异常处理函数就是弹出一个对话框,告诉你程序异常了,而在发布软件时,你可以用其他函数原创 2013-03-08 10:59:53 · 6508 阅读 · 0 评论 -
【zz】函数对象
<br />尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。函数对象(也称“算符”)是重载了“()”操作符的普通类对象。因此从语法上讲,函数对象与普通的函数行为类似。 <br /><br /><br />用函数对象代替函数指针有几个优点,首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性。函数对象也具备有存储先前调用结果的数据成员。在使用普通函数时需要将先前调用的结果存储在全程或者本地静态变量中,但是全程或者本地静态变量有某些我们不愿转载 2011-03-17 13:27:00 · 1030 阅读 · 0 评论 -
ZZ C++ 枚举类型的定义域问题
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例: enum FileAccess { Read = 0x1, Write = 0x2, }; FileAccess access = ::原创 2010-03-05 10:34:00 · 2655 阅读 · 0 评论 -
尽量减小C++程序中文件之间关联程度的方法
在头文件中如果需要其他文件定义的类,尽量不包含那个头文件,只进行类的声明,头文件中使用这个类的时候能用指针就尽量用指针,并且不出现对该类函数的调用,在cpp文件中再包含那个类的头文件。原创 2010-03-04 18:32:00 · 1278 阅读 · 1 评论 -
C++模板类与分离模型
在C++中,不建议将模板类的定义和实现分离到h和cpp文件中,因为这样会造成链接错误,如果一定要这么做,需要在使用模板类的CPP中Include那个模板定义的Cpp原创 2010-03-05 19:13:00 · 1595 阅读 · 0 评论 -
设计模式(Design Patterns)总结归纳
创建型模式 1 AbstractFactory 抽象工厂 关键词:多套方案 意图:提供一个创建多套(每套有相应的一群对象)的方法 适用情况:1、一个系统由多个产品系列中的一个来配置2、强调一系列相关的产品设计。 结构: 这里面AbstractFactory是抽象工厂,下面的两个是每套方案的工厂,每种工厂有相同的虚函数接口用来创建对象,也可以用于从文件读入配置来创建,右面的部分是产原创 2009-10-22 16:02:00 · 2609 阅读 · 0 评论 -
C++编程思想第二卷(实用编程技术)摘要
在c++编程思想的第二卷中介绍了很多更深入的c++特性,这是现代C++编程的精髓 模板 1.一般类的声明和定义都在H和CPP两种文件中,主要是怕连接时的多重定义,但是对于模板可以放心的将他们都放在H文件中,因为template后面的东西编译器不会为其分配空间,知道有一个模板实例告知。如果不适用内敛的方式,在每次定义模板的函数前都要声明template,而且声明中的类名后面要加 2.可以这样定原创 2009-10-16 15:25:00 · 1570 阅读 · 0 评论 -
effective and more effective c++
1、尽量用const和inline而不用#define,在定义常量时用const,定义一些小函数时用inline。定义指针常量时要把指针和常量都定义为const,定义成员常量时要把成员定义为static保证所有的实例只有这一个常量。 2、尽量用而不用,尽量用new和delete而不用malloc和free,对应的new和delete要采用相同的形式,尽量使用C++风格的注释。 3、析构函数里对原创 2009-10-12 12:41:00 · 1383 阅读 · 0 评论 -
do{...}while(0)的意义和用法
转自http://www.spongeliu.com/415.htmllinux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助定义复杂的宏,避免转载 2017-02-03 11:51:49 · 4792 阅读 · 6 评论