gpt4 book ai didi

c++ - 临时修改不对吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:20 24 4
gpt4 key购买 nike

在 C++98/03/11 中,以下代码有效:

std::string meow() { return "meow"; }

int main()
{
meow().append("purr");
return 0;
}

既然 temporary 在分号处消失了,这应该是安全的吧?

最佳答案

这并没有错,在某些情况下这样做很有用。

假设我有一个包含大量数据的 vector ,我想清除数据和内存..

{ 
std::vector< int >().swap( myVec );
}

肯定会清除内存。 myVec.clear() 可能只会将逻辑大小改回 0。

正如我在上一个问题中展示的那样,您可以像这样使用它:

class Foo
{
public:
Foo& operator+=( Foo const& ); // implement
Foo operator+( Foo const& rhs ) const
{
return Foo( *this ) += rhs;
}
};

那里的实现修改一个临时文件然后按值返回它(C++11 中的右值引用,C++03 中的按值)。

显然,对于右值引用,您有更多示例,例如您可以返回 meow().append( "purr")

关于c++ - 临时修改不对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26214932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com