さて、私は深くC++に慣れてきました。遅くて、すべてがダウンしています。最終的には、ポインタを使うべきかどうか、正しく実装する方法など、ポインタは意味をなさないようになっています。C++:ポインタ構文の相違点
しかし、まだ答えが必要だったポインタの基本的な使い方について少し疑問がありました。 foo
に次の呼び出しの違いは何でしょう...次のクラスA
と機能foo(A* bar)
で
...
class A
{}
void foo(A* bar)
{}
:私は、右のコードにジャンプしますか?
A* a;
A b;
foo(a);
foo(&b);
は、彼らは両方の罰金、コンパイル、および限り私が覚えて、私は彼らとの問題を持っていませんでした。
私はA* a;
ニーズがnew
で作成するのに対し、A b;
が(それは実際にオブジェクトを作成していないので、それだけの潜在的A
オブジェクトへの4バイト長の参照を開催しています)、右がインスタンス化されると思います。
私は、私が正しく、この考えていた場合、a = b;
(EDITはa = &b
ことを確認)してから、正常foo
にa
を渡すことができます。しかし、a = &b
とfoo
が、a
が指す(存在しない)オブジェクトを読み込もうとすると、実行時エラーが発生します。
また、上記が正しい場合、正常にfoo(&b);
と呼ぶことができます。
正しいですか?
ありがとうございます!
@SethCarnegie:はい。修正されました。それを指摘してくれてありがとう。 –
スマートポインタの良いリンク。以前は聞いたことがありませんでしたが、非常に便利です。私はそれらを調べなければならないでしょう! – Qix
@ Di-0xide:あなたはすべきです。 RAIIは、C++の最も強力で優れた機能の1つです。 –