繁体   English   中英

C++ 字符串流初始化

[英]C++ Stringstream initializations

我有两个代码片段:

这不会编译:


std::string reverseSentence(std::string sentence) {
    std::stringstream stream = sentence;
}

这样做:

std::stringstream stream (sentence);

我的理解是T foo = exprT 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM