Name
new operator — Allocates a dynamic object or array of objects
Synopsis
new-expr ::= [::] new [placement] new-type-id [new-initializer] | [::] new [placement] ( type-id ) [new-initializer] placement ::= ( expr-list ) new-type-id ::= type-specifier-seq [new-declarator] new-declarator ::= ptr-operator [new-declarator] | direct-new-declarator direct-new-declarator ::= "[" expression "]" | direct-new-declarator "[" constant-expr "]" new-initializer ::= ( [expr-list] ) ptr-operator ::= * [cv-qualifier-seq] | & | [::] nested-name :: * [cv-qualifier-seq]
The new
expression allocates
memory and constructs an object. It has many forms, the simplest being
a simple type name (e.g., new
int
). The new-type-id can be a sequence of type
specifiers and qualifiers, with pointer operators, a reference
operator, and an array size (e.g., new
int*[n][42]
, which allocates a
two-dimensional array of pointers to int
with n
rows and 42 columns). The first dimension
can be an integral expression; the second and subsequent dimensions
must be constant expressions. If the type contains parentheses, such
as function pointers, you should enclose it in parentheses to avoid
ambiguity.
The new
expression calls an
allocator function to allocate the necessary memory, then initializes
the memory. The new-initializer
is an optional list of expressions in parentheses. If no new-initializer is present, the new object is initialized to its default value: POD objects are uninitialized, and other objects are initialized ...
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.