語法的調用是什麼,它有什麼作用?對於哪個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