В случае этого вопроса значения этих двух new
с идентичны.Грамматически, операнд первой формы new ()
является идентификатором типа, а операнд последней - новым идентификатором типа.Что касается new-type-id, если (....)
появляется в конце операнда, это интерпретируется как список аргументов конструктора.То есть, если мы пишем new int(1)
, int
инициализируется равным 1. С другой стороны, что касается идентификатора типа, если появляется (....)
, он является частью типа.Например, когда мы new
указываем на функцию, мы должны использовать new( type-id )
форму.Например, как new( int(*)() )
.