我的问题是关于C++中的临时变量以及如何最好地避免它们的陷阱。C++临时变量的生存期
在有些情况下,我们做类似下面的内容实例:
SomeFunctionReturningStdString().c_str();
其中SomeFunctionReturningStdString()
按值返回std::string
。
我们已经发现,但是这会导致不确定的行为,并提出了两个建议,以解决此问题:
std::string temp = SomeFunctionReturningStdString();
temp.c_str();
..similar在此link指定的解决方案。
或使SomeFunctionReturningStdString()
通过引用返回std::string
。这样,如果我的理解是正确的,那么就不会创建一个临时对象,因为我们现在有了对该对象的引用。
这两个解决方案是否有效?他们都可以避免与临时变量相关的陷阱吗?
不幸的是,你的例子被简化为不再相关。是的,这里有一个暂时的,但它足够长(完整的表达),所以'c_str'调用本身是有效的。返回的'char const *'指针在临时字符串的同一时刻(final';')过期。 – MSalters