摘要: 介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0)就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销, 阅读全文
posted @ 2014-03-18 15:57 大卫酱_David 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 标准C++包含一个显式的转换语法:--static_cast:用于“良性”和“适度良性”的转换,包括不用强制转换--const_cast:用于“const”和/或“volatile”进行转换--reinterpret_cast:转换为完全不同的意思。为了安全的使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否则就是为了其他隐秘的目的。这是所有转换中最危险的。--dynamic_cast:用于类型安全的向下转换-----常用-----static_cast:用于所有明确定义的转换,包括void*的强制转换、隐式类型转换、类层次的静态定位。1. 数据类型由小到大的转换,比如int 阅读全文
posted @ 2014-03-18 14:16 大卫酱_David 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 线程的重要特性就在于,如何让多个线程之间互相合作,而不是争吵罢工。同步(synchronous):当程序1调用程序2时,程序1停下来不动,直到程序2完成回到程序1来,程序1才继续下去,那么两者的关系就是同步;异步(asynchronous):如果程序1调用程序2时,经自继续自己的下一个动作,那么两者之间的关系就是异步;win32中关于进程和线程的协调工作是由同步机制来完成。临界区域:所谓临界区域就是指用来处理一份被共享的资源的程序代码。必须对临界区域进行保护,一次只能有一个线程获准进入该区域内进行操作。一般代码中可以为需要保护的资源,声明一个CRITICAL_SECTION类型的变量,让其扮演 阅读全文
posted @ 2014-03-18 13:40 大卫酱_David 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 对于普通类型的对象来说,他们之间的复制是简单的,比如: int a = 88; int b = a; 而类和普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 #include using namespace std;class CExample {private: int a;public: CExample(int b) { a=b;} void Show () { coutusin... 阅读全文
posted @ 2014-03-18 11:05 大卫酱_David 阅读(131) 评论(0) 推荐(0) 编辑