C ++には、適切なデフォルトコンストラクタ(引数なしのコンストラクタ)ではありません

       今日は、次のコードを参照して、問題外読み、読み、プロキシクラスの例を記述し、それを持っているでしょう

    const  int型 _cap = 10 ; 
    Array1D * _elemArray = 新しい Array1D [_cap]。

        同時に、私は自動的に生成されたコンパイラを交換するArray1Dため、このクラスのコンストラクタを書きました

    Array1D(INT INX)
    { 
        _elemNum = 新しいT [INX]。
    }

        その後エラー、何の適切なデフォルトコンストラクタを示唆していないが、明らかに、私はここにはコンストラクタを提供することで、問題は上記の新しいステートメントに対応することができない既存のコンストラクタにあり

        ベクターの接触構成:ベクトル<整数> * VEC =新しいベクトル<整数> [20](25); 20は、アレイのベクトル長であり、アレイ25は、各ベクトルの長さであり、我々が知っていることができ、そこであるべきです渡された情報の3つのタイプがあります。

        1.新たに割り当てられたメモリは、アプリケーション・オブジェクト・タイプのメモリは、ベクトルであります

        2. 20個のそのようなオブジェクトの合計

        コンストラクタ着信オブジェクトへの最初の引数として3.25

 

        次に【_cap】図、コンストラクタへの引数として渡さない新しいArray1Dは、このクラスをArray1Dが、使用される新しいパラメータメモリ割り当て関数として_cap

        つまり、上記のコードは、この新しい(Array1D、_capを、③)を参照することができます。

        ③コンストラクタに渡す必要があるパラメータ

 

        これは、デフォルト値が使用されていないがありますので、実際にはデフォルト値のINXこの問題は、新しい引数なし​​のコンストラクタを提供する必要がない場合は、(パラメータが存在している必要があります私は、コンストラクタの上方に設けられている、明確であるが、問題を分離しますC ++コンストラクタの理解がより便利に、私はこの問題を回避するビットは(エスケープ))を意味しますが、コードの先頭にはので、ここでは、このパラメータを提供していないデフォルト値が実際のパラメータを構築する必要はありませんだと思います彼らは、コンパイラを通過した後の関数は、(このコードは実際には何の問題は、空の関数本体を必要としませんでした)コードに追加しました。

おすすめ

転載: www.cnblogs.com/HotPants/p/11421065.html