临时对象的 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的生命周期持续到_content
returns的构造函数,所以是有效和安全的。
没关系。 path
定义明确,匿名临时成员在成员 _content
.
初始化期间有效
您应该注意,如果 FileIO().read(path)
抛出异常,那么 ~Document()
将 不会 被调用。
例如:
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的生命周期持续到_content
returns的构造函数,所以是有效和安全的。
没关系。 path
定义明确,匿名临时成员在成员 _content
.
您应该注意,如果 FileIO().read(path)
抛出异常,那么 ~Document()
将 不会 被调用。