我正在学习一些C ++,并且我学习了从字符串和整数转换的部分。我在查看代码,它说的是:
istringstream converter(stringVariable);
如果“converter”是变量名,那么为什么要在它之后使用?(
)答案 0 :(得分:6)
括号将参数括在istringstream
constructor。
istringstream converter(stringVariable);
// ^^ variable being passed as argument to the
// istringstream constructor
此初始化语法适用于具有参数的构造函数的所有类型。这是标准的C ++对象初始化语法之一,但要注意:在某些情况下,类似的结构可以解析为函数声明,即所谓的the most vexing parse。所以这个
istringstream mystream();
将被解析为一个函数,尽管std::istringstream
有一个不接受任何参数的构造函数。
答案 1 :(得分:2)
因为这是你调用istringstream
实例的构造函数的方式。
答案 2 :(得分:1)
请注意,在今天的C ++版本(C ++ 11)中,最好将其写为:
istringstream converter{stringVariable};
这称为“统一初始化”语法,它与带括号的语法大致相同,但永远不会被误认为是函数声明(没有“最令人烦恼的解析”)。