0

改善しようとしているプログラムでこれに遭遇しました。

class Class1
{
    private:

    public:
       Class1();
       ~Class1();

    protected:

        Class2* Object2;   
};
Imbalance::Imbalance()
  {
   Object2 = (Class2*)NULL;
  }

オブジェクトを作成するときの * の意味と、クラスをインスタンス化するときに object = the class something null にする理由を教えてください。これについて読める本はありますか?または、MQL4、C++ のクラスとオブジェクトに関する適切なドキュメントまたは Web ページ ...

4

1 に答える 1

2

*C++ の は、オブジェクトへのポインタであることを意味します。

へのポインタを初期化するNULLということは、それがどこも指していないことを意味します(ちなみにnullptr、最近ではより良い代替手段になります)。

通常、コード内のある時点で、次のようなステートメントが見つかります。

if ( Object2 == NULL )       // if not pointing to an object 
     Object2 =  new Class2;  // create a new one 

C++ に関するほとんどの書籍では、ポインターについて詳しく説明しています。

したがって、私の最初の答えは、B.Stroustrup の「C++ プログラミング言語」です。

いくつかのオンライン チュートリアル: ここここ.

編集: MQL4 言語

歴史的に C に似た構文構造に基づいていた MQL4 言語では、最近の (ビルド 509 後) 拡張機能がさらに追加されました (MQL5 ドメインから借用)。*はオブジェクトへのポインタでもありnew、オブジェクトを動的に作成します。ただし、C++ とは異なり、メモリの場所への直接ポインターではなく、記述子の概念を使用した間接ポインターです。

事前定義された定数変数NULLは、C++ の場合と同様に、値がないことを意味します。変換せずに、他の基本型の変数に割り当てることができます。基本型変数とNULL値の比較は許可されています。

「New-MQL4」(ビルド 509 以降)では、オペレーターNULLで作成されたオブジェクトへのポインターと比較することもできます。new

(追加の MQL4 固有の情報については、user3666197 に感謝します)

于 2014-09-23T20:58:22.447 に答える