確かに、JavaやC#のような言語からC ++に移行するのは気が遠くなるかもしれませんが、私もそれを経験しました。
何よりも重要な違いは、C ++では、ほとんどの場合、自分のメモリを管理することです。ヒープ上にオブジェクトを作成するときは、メモリをリークしないようにオブジェクトを削除する必要があります。これは、適切と思われるときにオブジェクトを削除できることを意味します。スタック上にオブジェクトを作成する場合、スコープ外になると自動的に削除されます。スコープ外になった後は使用しないように注意する必要があります。
例:
void do_queue(B& queue)
{
Evt *e = new Evt;
queue.queueEvent(e);
} // all well, e can be popped and used (also must be deleted by someone else!)
対
void do_queue(B& queue)
{
Evt e;
queue.queueEvent(&e);
} // e is out of scope here, popping it from the queue and using it will most likely cause a sigseg
そうは言っても、2つの方法は、1つの側面でも大きく異なります。最初の方法は、オブジェクトを作成します。2つ目は、オブジェクトへのポインタを作成します。ポインタを使用することの良い点は、スタックにコピーされるメモリを最小限に抑えて、ポインタをパラメータとして渡すことができることです(オブジェクト全体ではなく、ポインタがコピーされます)。もちろん、「&」を使用してスタックに割り当てられたオブジェクトのアドレスをいつでも取得したり、参照として渡すことができます。ただし、スタックに割り当てられたオブジェクトを使用する場合は、そのスコープに特に注意してください。
JavaからC++に移行したとき、このWebサイトは素晴らしいリソースであることがわかりました。http://www.parashift.com/c ++ -faq-lite /-おそらくそれも見つかるでしょう、それは多くの良い説明を提供します