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
.
归档时间: |
|
查看次数: |
2722 次 |
最近记录: |