0

我正在学习一些 C++,然后我学习了从字符串和整数转换的部分。我正在查看代码,它说的是:

istringstream converter(stringVariable);

如果“converter”是一个变量名,那为什么在它后面加上()呢?

4

3 回答 3

6

括号括起istringstream构造函数的参数。

istringstream converter(stringVariable);
//                            ^^ variable being passed as argument to the
//                               istringstream constructor

此初始化语法适用于所有具有带参数的构造函数的类型。这是标准的 C++ 对象初始化语法之一,但请注意:在某些情况下,类似的构造可以被解析为函数声明,这就是所谓的最棘手的解析。所以这

istringstream mystream();

将被解析为一个函数,尽管std::istringstream有一个不接受参数的构造函数。

于 2013-06-09T22:48:04.770 回答
2

因为这是您调用istringstream实例构造函数的方式。

于 2013-06-09T22:48:09.090 回答
1

请注意,在今天的 C++ (C++11) 版本中,最好将其写为:

istringstream converter{stringVariable};

这被称为“统一初始化”语法,它与带括号的语法非常相似,但永远不会被误认为是函数声明(没有“最麻烦的解析”)。

于 2013-06-09T23:45:00.347 回答