谨慎使用匿名对象

有时为了代码简洁我们会选择使用匿名对象,但是它的生命周期是需要注意的,那就是当前执行语句分号结束后立即释放!!!不是等到函数执行结束。
比如有一个工具函数 
  1. std::string GetApplicationPath(); // 获取当前进程所在目录
后续有几处需要传入 const char * 型参数,为了代码简洁,我这样写
  1. const char *config_path = GetApplicationPath().append("config.ini").c_str();
结果单步调试 config_path 永远指向乱码,网上搜了一下原来匿名对象在当前语句执行完毕后立即释放,跟普通对象不同!
 谨记!!!




posted @ 2016-09-23 14:54  琼'  阅读(171)  评论(0编辑  收藏  举报