这行代码有什么作用?
new int[];
根据我的编译器的反汇编(VC ++ 2012),其作用与以下操作相同:
new int[0];
但是它是由C ++标准指定的吗?这是法律指示吗?
该表达式new int[]
在C ++ 11中无效(我尚未检查C ++ 14)。
如果使用单个[]
语法,则需要在方括号之间使用(隐式转换为)整数类型表达式,以表示所需的数组大小。
请注意,此大小不必是常数:在抽象的最底层,这是您在C ++中分配动态数组的方式。
C ++ 11(通过N3290最终草案)§5.3.4/ 6:
” noptr-new-declarator中的每个常量表达式均应为整数常量表达式(5.19),并求值严格为正。的表达在一个noptr新声明符应整数类型,无作用域枚举类型,或者用于其中单个非显式转换功能积分或无作用域枚举类型存在的类类型的(12.3)
表达式用于第一个[]
括号。在后面的[]
括号中,必须使用常量表达式(在编译时已知的值),因为寻址最外面的数组维需要已知大小的数组项。
当然,new
与其直接使用,不如直接使用std::vector
(或std::string
),通常会更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句