gpt4 book ai didi

c++ - 右值作为左值

转载 作者:太空狗 更新时间:2023-10-29 20:53:43 25 4
gpt4 key购买 nike

找到了如何将右值用作左值的解决方法:

&(std::string()=std::string("Hello World"));

但不确定使用这种结构是否合法。

与此相同的代码对我有用

typedef std::pair<const char *, const std::string *> custom_pair;

std::ostream & operator <<(std::ostream & os, const custom_pair & kv)
{
if (kv.first && kv.second && !kv.second->empty())
os << kv.first << *kv.second;

return os;
}

std::ostringstream q;
q << custom_pair("example_string=", &(std::string() = IntToString(1)));

custom_pair 构造函数需要地址作为第二个参数,但有人可以解释一下使用它是否正确吗?

最佳答案

在您的用例中没问题。临时对象在“<<”操作后的分号处销毁。到那时,它就不再使用了。

当临时对象被销毁后指针可能仍被使用时,请注意不要使用此模式。

也就是说,我不会在代码审查中接受此代码。每个阅读本文的人都很难确定它为什么有效。正如您在问题下方的评论中所看到的。

关于c++ - 右值作为左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42010798/

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