在 C++ 中引入 gc 后的对象初始化
浏览:2850次 出处信息
这几天白天都在安排面试,其实还是有点累的。晚上就随便写点程序,好久没摸 C++ ,有点生疏。也算是娱乐一下吧。
主要工作其实是在 C 库的基础上做一个 C++ 的中间层。跟在 C 库的基础上做 lua 中间层差不太多。前几天加入了 gc 后,发现了一些有趣的用法。
比如对于构造对象。 C 的 api 中,如果创建一个对象失败,就会返回空指针。但是对于 C++ 就不一样了,new 是不应返回空指针的。书本上的推荐做法是在构造函数里抛异常。但是我又不太想进一步的引入异常机智,怎么办呢?
简单的方法是让 C++ 的封装类的构造函数什么都不干。btw, 我听 google 的 Mike Burrows 也讲过 popular C++ constructs can be bad for abstraction 。
然后加一个 init 函数来初始化这个对象,成功则返回 this 指针,失败则返回 NULL。
如果没有 gc 的时候,我需要这样做:
| 以下是代码片段: A *a = new A; if (!a->init()) { delete a; a = NULL; } |
有了 gc 后很方便,只需要
| 以下是代码片段: A *a = (new A)->init(); |
嘿嘿,有 gc 还是方便很多呀。只是 new 的操作优先级让我有点不爽。
ps. 我知道即使没有 gc ,我也可以用很现代的 template 技术做到同样的事情。而且代码看起来更有品味。不过我感觉自己越来越老土了,写 C++ 也越来越 C Style 了。完全没有 10 多年前对 C++ 的火热激情。
建议继续学习:
- Nginx启动初始化过程(一) (阅读:5066)
- Linux系统初始化优化推荐策略 (阅读:3857)
- 深入理解PHP原理之Session Gc的一个小概率Notice (阅读:3858)
- Nginx启动初始化过程(二) (阅读:3191)
- 结构体初始化的方法 (阅读:2892)
- 把 lua 的 gc 移到独立线程 (阅读:2609)
- PHP类中变量的初始化只能是定值 (阅读:2481)
- Java -- Hotspot虚拟机调优与GC垃圾回收策略 (阅读:1979)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:关于URL编码
后一篇:NCR与HTML Entities >>
文章信息
- 作者:云风的 BLOG 来源: 云风的 BLOG
- 标签: gc 初始化
- 发布时间:2010-02-25 09:28:11
建议继续学习
近3天十大热文
-
[914] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[52] Innodb分表太多或者表分区太多,会导致内 -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] 分享一个JQUERY颜色选择插件
