C ++ Stringstream初始化

问题描述 投票:0回答:1

我有两个代码段:

无法编译:


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

这样做:

std::stringstream stream (sentence);

据我了解,T foo = exprT foo(expr)。因此,两个stringstream初始化不相等吗?为什么一个编译而另一个不编译?

c++ initialization stringstream
1个回答
1
投票

constructor of std::basic_stringstreamstd::basic_stringstream被标记为std::string,在explicit中不像copy initalization那样考虑。

[std::stringstream stream = sentence;std::stringstream stream (sentence);,它也考虑direct initialization构造函数。

直接初始化比复制初始化更宽松:复制初始化只考虑非explicit构造函数和非明确的用户定义explicit,而直接初始化考虑所有构造函数和所有用户定义的转换函数。

© www.soinside.com 2019 - 2024. All rights reserved.