语法的调用是什么,它有什么作用?对于哪个C++标准呢?C++新的语法,请解释
shared_ptr<int> p{new int{10}};
我感到困惑的第一套大括号{}
的。我想,第二组是创建一个10个元素的临时对象?
语法的调用是什么,它有什么作用?对于哪个C++标准呢?C++新的语法,请解释
shared_ptr<int> p{new int{10}};
我感到困惑的第一套大括号{}
的。我想,第二组是创建一个10个元素的临时对象?
语法被调用的是什么,它有什么作用?
这种语法称为统一初始化或列表初始化。它做了很多不同的事情explained here。在这种特殊情况下,构造使用普通指针初始化共享指针,并将新分配的整数设置为10(demo)。
的效果是相同的,如下面的代码片断:
int *tmp = new int;
*tmp = 10;
shared_ptr p(tmp);
对于该C++标准它是什么?
此语法是在C++ 11中引入的。
感谢您的回答!所以,如果它等于'shared_ptr
@Qwertypal这个新的语法更具有限制性。例如,如果使用不适合在'int',这样,一个'长long'不变'诠释一个(123456789098876543LL);'您的变量'了'会得到一个负数后截断([DEMO]( http://ideone.com/O3kG3h))。如果你用'{...}'尝试同样的事情,你会得到一个编译时错误([demo](http://ideone.com/71zbpI))。 – dasblinkenlight
它在堆上创建1个int值为10我认为,然后将其存储在shared_ptr – paulm
阅读[统一初始化语法](http://www.stroustrup.com/C++11FAQ.html#均匀-INIT)。 –
这会更好地表达为'auto p = make_shared(10);' –
sp2danny