0

最近、私は C++ のポインターに手を出しています。私が読んだことによると、ポインター変数は、変数を参照 (VB の ByRef と同様) または関数ポインター (C# のデリゲート) で渡すために使用されます。ポインターの使用はこれらの例に限定されないことは確かです。ポインターが必要なアプリケーションを知りたいと思っていました。ネット上のほとんどのチュートリアルでは、参照による受け渡しの使用法を説明しようとしています。事前に感謝し、初歩的な質問で申し訳ありません:)

4

3 に答える 3

2

一般に、他のオプションがない場合にのみポインターを使用できます。たとえば、C では、変数を「参照によって」関数に渡す方法はありません。

また、ポインターのない C++ では、実行時のポリモーフィズムを実際に実現することはできません。

于 2012-07-23T05:02:32.997 に答える
1

注意として、C++ でプログラミングしている場合は、スマート ポインターから学習を開始する必要があります。

http://en.wikipedia.org/wiki/Smart_pointer

スマート ポインターはポインターと同等ですが、より安全です。

以下は、C++ スマート ポインターを使用するための優れたチュートリアルと演習です。

http://www.ida.liu.se/~TDDD38/exercises/Smart_Pointer_II/Smart_pointer_II-11-en.pdf

于 2012-07-23T05:13:06.827 に答える
1

ポインターを使用する理由はいくつかあります。最も明白なものの 1 つは、オプションの引数です。

void f(int a, int const* b = NULL);

を使用すると、 が nullfかどうかをテストbし、その結果に基づいて行動できます。

ポインターを使用するもう 1 つの非常によくある理由は、ナビゲーションです。たとえば、オブザーバー パターンを見たいと思うかもしれません。しかし、オブジェクト間をナビゲートする必要がある他の多くのケースがあります (動的に変化する関係を持つ)。

最後に、オブジェクトが動的に割り当てられるときにポインターが使用されます。これは、C# や Java などの言語 (基本的にすべて、またはほとんどすべてを動的に割り当てる) ほど頻繁ではありません。C++ では、何かを動的に割り当てる通常の理由は、オブジェクトがコピー可能ではなく (ID を持っている)、プログラムのスコープから独立した有効期間を持つためです。もう 1 つの理由は、動的トポロジを持つオブジェクト内のサブオブジェクトです。たとえば、グラフのノードなどです。ポリモーフィズムも理由になる場合があります。オブジェクトの実際のタイプが実行時の条件に依存する場合は、動的に割り当てる必要があります。

于 2012-07-23T08:14:30.463 に答える