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