小技巧
来源:互联网 发布:mac cad格式问题 编辑:程序博客网 时间:2024/06/12 06:34
0 多字节字符集与Unicode适应
在Windows程序设计中,可以使用很多MS定义的宏来根据_UNICODE或UNICODE宏是否定义以决定编码中使用的函数或结构的具体版本:多字节字符集或Unicode版本。C++库中很多模版类的实例也是有多字节字符集与Unicode之分的,在使用纯C++做后台处理时,也可以跟随MS的这种思想,自己使用一个头文件来通过#define或typedef根据使方法调用适应字符编码版本。 #ifdef _UNICODE
#define tcout std::wcout
#define tstring std::wstring
#define tfstream std::wfstream
...
#else
#define tcout std::cout
#define tstring std::string
#define tfstream std::fstream
...
#endif
除了像sprintf_s(安全字符串方法)与wsprintf(抱歉,没找到安全版)这样参数列表不符的方法外,这样改变项目编码集时,几乎不需要改动代码。
1 Singleton模版函数
通常为了实现单例类:
1.1 每个类单独实现单例模式
1.2 创建一个单例模版类
缺点:
每个单例类独立实现单例模式一个类便要重写一次同样的代码,效率太低。
有点:
不需要特殊将该目标类设计为单例模式,保留该类可以定义对象的特性,使用时分清即可。
使用单例模版实际上是利用该类的实例获取静态方法而已,不若直接定义一个可全局获取到的(某命名空间下最好)单例模版函数,且不需要针对不同类的特性重载一些运算符,需要单例的类拥有什么样的特性直接利用。
namespace xts{ //template function for singleton template <typename ClassName> ClassName& Singleton() { static std::auto_ptr<ClassName> s_Ins; if (s_Ins.get() == nullptr) { s_Ins.reset(new ClassName()); } return *s_Ins.get(); }}//若使用怕麻烦,可以直接在某个全局引用的文件中定义一个宏即可(如在某个专门用于宏定义的头文件)#define ClassName Singleton<CClassName>()
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧:
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- 小技巧
- Linux学习---帮助命令
- ok6410中断架构伪代码
- Java lombok
- vmware虚拟机上运行ubuntu14没声音解决方法之一
- MySQL5.7版本以后的初始密码问题
- 小技巧
- 纯洁
- JS原生addClass、removeClass实现
- Xshell连接Ubuntu时SSH服务器拒绝了密码问题
- App路由简记(一)
- (提高篇)第一讲 项目 简单的函数运用(一)
- CodeVS2185 最长公共上升子序列
- OKHttp源码分析(一)
- Linux下静态IP的配置