这是什么意思,当我使用new auto
? 考虑表达式:
new auto(5)
什么是动态分配的对象的类型? 这是什么返回指针的类型?
这是什么意思,当我使用new auto
? 考虑表达式:
new auto(5)
什么是动态分配的对象的类型? 这是什么返回指针的类型?
在此背景下, auto(5)
解析为int(5)
您分配一个新的int
从堆中,初始化为5
。
(因此,它返回一个int *
)
引用安迪警车的足智多谋的答案,有权限:
每一段中的C ++ 11标准的5.3.4 / 2:
如果
auto
类型说明符出现在新型-ID或者新的表达式的类型ID的类型说明符-SEQ, 新表达应包含以下形式的新初始值设定( assignment-expression )
所分配的类型是从新初始化推导如下:设
e
在新初始化程序的分配,表达和T成为新的表达的新型-ID或类型-ID,将所分配的类型是类型推导出的变量x
中所发明的声明(7.1.6.4):T x(e);
[ 实施例 :
new auto(1); // allocated type is int auto x = new auto('a'); // allocated type is char, x is of type char*
- 端示例 ]
每一段中的C ++ 11标准的5.3.4 / 2:
如果
auto
类型说明符出现在新型-ID或者新的表达式的类型ID的类型说明符-SEQ, 新表达应包含以下形式的新初始值设定( assignment-expression )
所分配的类型是从新初始化推导如下:设
e
在新初始化程序的分配,表达和T成为新的表达的新型-ID或类型-ID,将所分配的类型是类型推导出的变量x
中所发明的声明(7.1.6.4):T x(e);
[ 实施例 :
new auto(1); // allocated type is int auto x = new auto('a'); // allocated type is char, x is of type char*
- 端示例 ]
因此,所分配的对象的类型是相同的推导的类型所发明声明的:
auto x(5)
这是int
。