小技巧

来源:互联网 发布:mac cad格式问题 编辑:程序博客网 时间:2024/06/11 21:55

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>()
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 邮箱的附件过期了怎么办 邮箱里的附件过期了怎么办 邮箱中附件过期了怎么办 扣扣邮箱附件过期怎么办 公司网页版邮箱进不去了怎么办 农行客户端密码忘记了怎么办 中国银行客户端密码忘记了怎么办 建行客户端登录密码忘记了怎么办 中国移动客户端密码忘记了怎么办 再歪一点授权码绑定怎么办 网易邮箱号忘了怎么办 忘记支付宝账号和密码怎么办 支付宝账号密码忘了怎么办 发邮箱文件超2g怎么办 报考计算机二级邮箱不存在怎么办 苹果邮箱登录要imap密码怎么办 注销微信支付后怎么办 手机卡注销后支付宝怎么办 12306手机邮箱都换了怎么办 网易手机邮箱手机换了怎么办 崩坏3号被盗了怎么办 qq账号被永久冻结了怎么办 淘宝账号被永久冻结了怎么办 qq账号被永久冻结怎么办 多多理财账号冻结了怎么办 苹果id安全问题忘记了怎么办 网易邮箱帐号忘了怎么办 网易邮箱密码忘记了怎么办 网易邮箱密码忘了怎么办 网易邮箱忘记邮箱账号怎么办 崩坏3三无号被盗怎么办 qq邮箱给58占用怎么办 支付宝邮箱被占用怎么办 苹果手机下载不了qq怎么办 附件预览时发生错误怎么办 手机下载的压缩包打不开怎么办 邮箱提示中转站剩余容量不足怎么办 手机邮箱密码忘记了怎么办 垃圾邮件被系统删除了怎么办 邮箱里的邮件下载不了怎么办 qq邮箱下载不了文件怎么办