クラスを初期化するときの*はどういう意味ですか? 通常、AS3 では次のようにします。
MyClass myClass = new MyClass
しかし、私はこれをC ++で見ました
MyClass *myClass = new MyClass
星は何のため?私はそれが時々使用され、他のものでは使用されていないのを見てきました.
クラスを初期化するときの*はどういう意味ですか? 通常、AS3 では次のようにします。
MyClass myClass = new MyClass
しかし、私はこれをC ++で見ました
MyClass *myClass = new MyClass
星は何のため?私はそれが時々使用され、他のものでは使用されていないのを見てきました.
C++ のアスタリスクは、プログラム内の位置に応じて多くのことを意味します。この特定のインスタンスでは、 のインスタンスではなく、 のインスタンスへmyClass
のポインターであるという意味を変更します。MyClass
MyClass
2 つの違いは、インスタンスの有効期間はスコープ外になると終了するのに対し、ポインターを介して割り当てて参照するインスタンスは、ポインターがスコープ外になった後でも有効なままであるということです。
次のような宣言を行うことは有効です。
MyClass myClass; // no "new"
この場合、 を使用する必要はありませんnew
が、インスタンスの存続時間は変数のスコープに関連付けられていますmyClass
。
アスタリスクは a を表しますpointer
。ポインタはメモリアドレスです。を記述するMyClass *myClass
と、新しい MyClass が作成されるビット範囲の先頭へのポインターが作成されます。
でオブジェクトを作成するとnew
、そのライフサイクルに責任を持つようになります。不要になったら削除する必要がありますが、MyClass myClass;
作成したスコープを終了すると、作成は破棄されます。&
このように記述しても、演算子を使用して myClass メモリ アドレスにアクセスできます。
さらに説明が必要な場合は、それらの本を入手してみてください。
ポインターといいます。C++11 互換コンパイラを使用している場合は、次の操作を実行できます。
auto myClass = std::make_shared<MyClass>();
「生の」ポインターを使用していた場合は、メモリを使い終わったときに手動で削除する必要がありますがshared_ptr
、これは必要ありません。