摘要:
函数模板的重载 一次编译和二次编译: 重载选择的时机问题: 模板在第一次编译时,会生成模板函数的内部表示,二次编译实例化模板,此时生成具体指令,确定重载版本,参数类型T具体类型已经知道。 但是可供选择的普通函数或者模板函数必须声明于该模板函数之前。因为,单向编译器在二次编译确定选择哪一个,但具体选择 阅读全文
摘要:
函数模板的重载 一次编译和二次编译: 重载选择的时机问题: 模板在第一次编译时,会生成模板函数的内部表示,二次编译实例化模板,此时生成具体指令,确定重载版本,参数类型T具体类型已经知道。 但是可供选择的普通函数或者模板函数必须声明于该模板函数之前。因为,单向编译器在二次编译确定选择哪一个,但具体选择 阅读全文
摘要:
首先明确数组作为形参传递时,如果非引用类型形参,本质上传递的实参为数组的首地址,即会发生退化。 首先明确数组作为形参传递时,如果非引用类型形参,本质上传递的实参为数组的首地址,即会发生退化。 引用式传递时则是传递的是数组整体。 引用式传递时则是传递的是数组整体。 并且此处比较大小,始终是比较的地址大 阅读全文
摘要:
优点:减少代码编辑量,同时实现了类似模板的类型无关形式编程。 缺点:添加新类型调用时都需要手动添加其定义即MAX(T) 对于返回值有限制,宏不是函数,本身只做文本替换,宏执行得到的结果是没有安全性检查的。MAX(T)展开并没有返回类型指定。 阅读全文
摘要:
比较pfunc1,pfunc2,pfunc3是否指向同一个函数? pfunc1 == pfunc3 ? pFunc作为函数指针类型,其本身是一个指针,在内存中实际占有空间(一般32位系统指针4字节) 另一种比较方法为 0 == memcmp(pfunc1, pfunc3) int a = 0; in 阅读全文
摘要:
C++ 1 STL 83 C++ hello.c #include int main (void) { std::cout //#include #include int main (void) { std::cout > i; std::cerr using namespace std; int main (void) { bool b = true; cout #... 阅读全文
摘要:
C++................................................................................................................................................... 阅读全文
摘要:
单例模式:在一个应用程序中,一个类有且只有一个实例,并提供一个访问它的全局访问点。 考虑到单例对象内存分配的时机分为懒汉模式,饿汉模式。 另外考虑到线程安全,三种推荐的实现方式:标准,Meyers,Double-Checked-Locking 结论: 如果使用vc6编译器,请放弃设计模式。 如果整个 阅读全文
摘要:
Gang of Four的“Design Patterns: Elements of Resualbel Software”书将设计模式归纳为三大类型,共23种。 创建型模式:通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式)行为型模式:通常和对象间通信有关。(共11种模式)结构型模式:描 阅读全文
|