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

C++ Call function of a temporary object

例如:

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

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

temporary的生命周期持续到_contentreturns的构造函数,所以是有效和安全的。

没关系。 path 定义明确,匿名临时成员在成员 _content.

初始化期间有效

您应该注意,如果 FileIO().read(path) 抛出异常,那么 ~Document() 不会 被调用。