方法调用的括号

时间:2012-05-28 21:21:27

标签: c++ stringstream

我想知道以下代码是否相同:

//first
string str; int num;
stringstream(str)>>num;
//second
string str; int num;
(stringstream)str>>num;

我试图运行它们并且它们有效。你能告诉我他们之间的区别吗?或者他们是一样的?非常感谢!!!

1 个答案:

答案 0 :(得分:4)

正如Luchian Grigore已经告诉过你他们是等同的。

第一个将使用stringstream::stringstream(const string&)构造函数创建临时对象。第二个是C风格的类型转换,它与static_cast<stringstream>(str) >> num;基本相同。 static_cast<>将使用上面的构造函数,因此两者都是等价的。

但是,正如Luchian已经告诉过你的那样,你不应该使用C风格的类型转换。请改用static_cast<>

另见: