6

重複の可能性:
The Definitive C++ Book Guide and List

クラスを初期化するときの*はどういう意味ですか? 通常、AS3 では次のようにします。

MyClass myClass = new MyClass

しかし、私はこれをC ++で見ました

 MyClass *myClass = new MyClass

星は何のため?私はそれが時々使用され、他のものでは使用されていないのを見てきました.

4

3 に答える 3

5

C++ のアスタリスクは、プログラム内の位置に応じて多くのことを意味します。この特定のインスタンスでは、 のインスタンスではなく、 のインスタンスへmyClassポインターであるという意味を変更します。MyClassMyClass

2 つの違いは、インスタンスの有効期間はスコープ外になると終了するのに対し、ポインターを介して割り当てて参照するインスタンスは、ポインターがスコープ外になった後でも有効なままであるということです。

次のような宣言を行うことは有効です。

MyClass myClass; // no "new"

この場合、 を使用する必要はありませんnewが、インスタンスの存続時間は変数のスコープに関連付けられていますmyClass

于 2012-10-16T13:09:31.697 に答える
2

アスタリスクは a を表しますpointer。ポインタはメモリアドレスです。を記述するMyClass *myClassと、新しい MyClass が作成されるビット範囲の先頭へのポインターが作成されます。

でオブジェクトを作成するとnew、そのライフサイクルに責任を持つようになります。不要になったら削除する必要がありますが、MyClass myClass;作成したスコープを終了すると、作成は破棄されます。&このように記述しても、演算子を使用して myClass メモリ アドレスにアクセスできます。

さらに説明が必要な場合は、それらの本を入手してみてください。

于 2012-10-16T13:08:50.513 に答える
2

ポインターといいます。C++11 互換コンパイラを使用している場合は、次の操作を実行できます。

auto myClass = std::make_shared<MyClass>();

「生の」ポインターを使用していた場合は、メモリを使い終わったときに手動で削除する必要がありますがshared_ptr、これは必要ありません。

于 2012-10-16T13:09:12.427 に答える