【发布时间】:2015-09-27 22:55:23
【问题描述】:
在下面的代码 sn-p... 中存储对 Quote::toXML 返回的临时字符串的引用在 ToXML::s_ 成员变量中是否安全,至少只要它与 << 运算符一起使用只要? IE。子表达式q.toXML 的结果是否一直存在到下一个;?
这里的完整表达是什么? q.toXML 的返回值。整个std::cout 还是对ToXML 构造函数的调用?
#include <iostream>
#include <string>
struct ToXML
{
ToXML(char const * const tag, std::string const & s) : tag_(tag), s_(s)
{
}
char const * tag_;
std::string const & s_;
};
std::ostream & operator << (std::ostream & os, ToXML const & v)
{
return os << "<" << v.tag_ << ">" << v.s_ << "</" << v.tag_ << ">";
}
struct Quote
{
std::string toXML() const
{
return "<Quote/>";
}
};
int main()
{
Quote q;
std::cout << ToXML("quote", q.toXML()) << std::endl;
return 0;
}
【问题讨论】:
-
查看:stackoverflow.com/questions/2822243/… 根据该信息,由于您的函数采用 const-reference,因此看起来没问题。
标签: c++