C ++临时对象的调用函数

时间:2015-09-22 13:41:28

标签: c++ function object call temporary

例如:

private:
    std::vector<std::string> _content;
public:
    Document (const std::string& path) :_content(FileIO().read(path)) { }

使用“临时”( read() )直接调用函数Object ( FileIO() )是否可以? 我问,因为它看起来很方便,但我以前从未见过这样的代码。只是想知道这是否是“有效的”C ++代码,而不是一些奇怪的反模式或性能“不能”。

2 个答案:

答案 0 :(得分:4)

临时的生命周期持续到_content的构造函数返回,因此它是有效且安全的。

答案 1 :(得分:4)

没关系。 public abstract class DashboardItem { public int X { get { return 100; } } public int Y { get { return 100; } } } 定义明确,匿名临时在成员path初始化期间有效。

您应该注意,如果_content引发异常,则FileIO().read(path)被调用。