是什么`新auto`吗?(What does `new auto` do?)

2019-08-21 12:12发布

这是什么意思,当我使用new auto ? 考虑表达式:

new auto(5)

什么是动态分配的对象的类型? 这是什么返回指针的类型?

Answer 1:

在此背景下, 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* 

- 端示例 ]



Answer 2:

每一段中的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



文章来源: What does `new auto` do?