在C++ 98/03/11中,以下代码有效:
std::string meow() { return "meow"; }
int main()
{
meow().append("purr");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于临时死在分号,这应该是安全的吗?
这不是不正确的,在某些情况下这样做很有用.
假设我有一个包含大量数据的向量,我想清除数据和内存.
{
std::vector< int >().swap( myVec );
}
Run Code Online (Sandbox Code Playgroud)
会清楚记忆.myVec.clear()可能只会将逻辑大小更改回0.
正如我在上一个问题中所示,您可以像这样使用它:
class Foo
{
public:
Foo& operator+=( Foo const& ); // implement
Foo operator+( Foo const& rhs ) const
{
return Foo( *this ) += rhs;
}
};
Run Code Online (Sandbox Code Playgroud)
那里的实现修改了一个临时的,然后按值返回它(C++ 11中的r值引用,C++ 03中的值).
显然,对于r值引用,您有更多示例,例如您可以返回 meow().append( "purr")