[英]C++ Stringstream initializations
我有两个代码片段:
这不会编译:
std::string reverseSentence(std::string sentence) {
std::stringstream stream = sentence;
}
这样做:
std::stringstream stream (sentence);
我的理解是T foo = expr
是T foo(expr)
。 因此,这两个字符串流初始化不是等效的吗? 为什么一个编译而另一个不编译?
采用std::string
的std::basic_stringstream
的构造函数被标记为explicit
,在 复制初始化中不考虑它,如std::stringstream stream = sentence;
.
std::stringstream stream (sentence);
是直接初始化,它也考虑explicit
构造函数。
直接初始化比复制初始化更宽松:复制初始化只考虑非显式构造函数和非显式用户定义转换函数,而直接初始化考虑所有构造函数和所有用户定义转换函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.