摘要: 单例模式 需求的提出 在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在(Single Instance) 如何定义一个类,使得这个类最多只能创建一个对象? 要控制类的对象数目,必须对外隐藏构造函数 思路: 将构造函数的访问属性设置为private 定义instance并初始化为NULL 阅读全文
posted @ 2018-06-22 23:49 sugarwill 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 智能指针的意义 现代c++开发库中最重要的类模板之一 c++中自动内存管理的主要手段 能够在很大程度上避开内存相关的问题 STL中的智能指针auto_ptr 生命周期结束时,销毁指向的内存空间 不能指向堆数组,只能指向堆对象(变量) 一片堆空间只属于一个智能指针对象 多个智能指针对象不能指向同一片堆 阅读全文
posted @ 2018-06-22 23:28 sugarwill 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 模板参数可以是数值型参数(非类型参数) template <typename T, int N> void func() { T a[N]; //使用模板参数定义局部数组 } func<double, 10>(); 数值型模板参数的限制 变量不能作为模板参数 浮点数不能作为模板参数 类对象不能作为模 阅读全文
posted @ 2018-06-22 01:27 sugarwill 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 类模板可以定义任意多个不同的类型参数 类模板可以被特化 指定类模板的特定实现 部分类型参数必须显示指定 根据类型参数分开实现类模板 类模板的特化类型 部分特化-用特定规则约束类型参数 完全特化-完全显示指定类型参数 类模板特化注意事项 特化只是模板的分开实现 本质上是同一个类模板 特化类模板的使用方 阅读全文
posted @ 2018-06-22 01:15 sugarwill 阅读(120) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-06-22 00:51 sugarwill 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 函数模版深入理解 编译器从函数模版通过具体类型产生不同的函数 编译器会对函数模版进行两次编译 对模版代码本身进行编译 对参数替换后的代码进行编译 注意事项: 函数模版本身不允许隐式类型转换 自动推导类型时,必须严格匹配 显示类型指定时,能够进行隐式类型转换 函数模版可以定义任意多个不同的类型参数 t 阅读全文
posted @ 2018-06-22 00:31 sugarwill 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 定义宏代码块 优点:代码复用,适合所有的类型 缺点:编译器不知道宏的存在,缺少类型检查 定义函数 优点:真正的函数调用,编译器对类型进行检查 缺点:根据类型重复定义函数,无法代码复用 c++中的泛型编程 函数模版 一种特殊的函数可用不同类型进行调用 看起来和普通函数很相似,区别是类型可被参数化 te 阅读全文
posted @ 2018-06-22 00:13 sugarwill 阅读(205) 评论(0) 推荐(0) 编辑