23

を使用するとはどういう意味new autoですか? 次の式を検討してください。

new auto(5)

動的に割り当てられたオブジェクトの型は何ですか? 返されるポインタの型は何ですか?

4

2 に答える 2

30

このコンテキストでは、 にauto(5)解決されint(5)ます。

intに初期化されたヒープから新しいを割り当てています5

(だから、それは を返していますint *

許可を得て、Andy Prowl の機知に富んだ回答を引用します。

C++11 標準のパラグラフ 5.3.4/2 によると:

type-specifier がnew-type-idまたはnew-expressionのtype-idtype-specifier-seqauto現れる場合、new - expressionには次の形式のnew-initializerが含まれます。

( assignment-expression )

割り当てられたは、次のeようにnew - initializer から推定されます考案された宣言 (7.1.6.4)の変数について次のように推定されます。x

T x(e);

new auto(1); // allocated type is int
auto x = new auto(’a’); // allocated type is char, x is of type char*

—<em>例の終了]

于 2013-04-10T19:53:16.970 に答える
13

C++11 標準のパラグラフ 5.3.4/2 によると:

type-specifier がnew-type-idまたはnew-expressionのtype-idtype-specifier-seqauto現れる場合、new - expressionには次の形式のnew-initializerが含まれます。

( assignment-expression )

割り当てられたは、次のeようにnew - initializer から推定されます考案された宣言 (7.1.6.4)の変数について次のように推定されます。x

T x(e);

new auto(1); // allocated type is int
auto x = new auto(’a’); // allocated type is char, x is of type char*

—<em>例の終了]

したがって、割り当てられたオブジェクトの型は、発明された宣言の推定型と同じです。

auto x(5)

ですint

于 2013-04-10T19:56:19.303 に答える