Jos*_*eld 22 c++ dynamic-allocation c++11 type-deduction
我用的是什么意思new auto?考虑一下表达式:
new auto(5)
Run Code Online (Sandbox Code Playgroud)
动态分配对象的类型是什么?它返回的指针的类型是什么?
Dre*_*ann 29
在这种情况下,auto(5)解决int(5).
您正在int从堆中分配一个新的,初始化为5.
(所以,它回来了int *)
在得到许可的情况下引用Andy Prowl的足智多谋的答案:
根据C++ 11标准的第5.3.4/2段:
如果
auto类型说明符出现在类型说明符-SEQ一个的新型-ID或类型-ID一个的新的表达,所述 新的表达应包括一个新初始化的形式的Run Code Online (Sandbox Code Playgroud)( assignment-expression )所分配的类型是从新初始化推导如下:设
e是分配表达在新初始化和T是新型-ID或类型-ID的的新表达,那么所分配的类型为类型推导出x本发明声明中的变量(7.1.6.4):Run Code Online (Sandbox Code Playgroud)T x(e);[ 例如:
Run Code Online (Sandbox Code Playgroud)new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*- 结束例子 ]
And*_*owl 13
根据C++ 11标准的第5.3.4/2段:
如果
auto类型说明符出现在类型说明符-SEQ一个的新型-ID或类型-ID一个的新的表达,所述 新的表达应包括一个新初始化的形式的Run Code Online (Sandbox Code Playgroud)( assignment-expression )所分配的类型是从新初始化推导如下:设
e是分配表达在新初始化和T是新型-ID或类型-ID的的新表达,那么所分配的类型为类型推导出x本发明声明中的变量(7.1.6.4):Run Code Online (Sandbox Code Playgroud)T x(e);[ 例如:
Run Code Online (Sandbox Code Playgroud)new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*- 结束例子 ]
因此,分配的对象的类型与本发明的声明的推断类型相同:
auto x(5)
Run Code Online (Sandbox Code Playgroud)
这是int.