0

C++ または Objective-C では、「コンストラクター」という用語は「初期化子」とまったく同じですか?

その理由は、「コンストラクター」という用語を見るたびに、コンストラクターがメモリ空間にオブジェクトをセットアップする責任があるようにも感じられるため、やや曖昧に感じるからです。実際、コンストラクターは単に「初期化」するだけです。したがって、「コンストラクター」という用語は、alloc と init が組み合わされているように見えるため、混乱を招く可能性がありますが、イニシャライザーという用語は、単に値を設定しているだけであることは非常に明確です。

上記の記述は一般的に正しいですか?

4

3 に答える 3

0

いいえ、それらは同じではありません。

初期化子は関数ではなく、C++ 文法の一部です。例えば:

std::string s = "abcd";

初期化子は= "abcd".

初期化子が変数定義に存在する場合、コンストラクターに渡される引数を提供します。

これについては、標準のセクション 8.5 で詳しく読むことができます。

于 2012-04-23T02:11:49.837 に答える
0

コンストラクターは、割り当て時に実行されることが保証されており、オブジェクトを定義済みの状態に初期化するために使用されます。C++ では、これをRAIIと呼びます。あなたが言ったように、初期化子は単に「値を設定する」または「オブジェクトを初期化する」だけであり、割り当て時に実行する必要はありません。

于 2012-04-23T02:12:12.763 に答える
0

コンストラクターは生のストレージを受け取り、そこにオブジェクトを構築します。

初期化子は、変数を初期化するために使用される値です。

コンストラクターと呼ばれるものが代わりにイニシャライザーと呼ばれる可能性があるという点はおそらくあると思いますが、C++ または Objective-C のいずれかで実際に考慮されたことはないと思います。「初期化子」は、C++ や Objective C が登場するずっと前に、C で現在受け入れられている意味をすでに持っていました。term は C ですでによく知られているので、C ベースの言語で用語をまったく別のものを意味するように再定義しようとする人がいるとは想像できません。

于 2012-04-23T02:19:30.400 に答える