C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++コンパイラは、独自のコンストラクタを作成するときにデフォルトのコンストラクタを作成しますか?


このチュートリアルでは、独自のコンストラクターを作成するときにC++コンパイラーがデフォルトのコンストラクターを作成するかどうかを理解するためのプログラムについて説明します。

通常、C ++コンパイラは、誰も定義されていない場合はデフォルトのコンストラクタを使用しますが、ユーザーが定義したコンストラクタを常に使用します。

#include<iostream>
using namespace std;
class myInteger{
private:
   int value;
   //other functions in class
};
int main(){
   myInteger I1;
   getchar();
   return 0;
}

出力

Compiles successfully

#include<iostream>
using namespace std;
class myInteger{
   private:
      int value;
   public:
      myInteger(int v) //user-defined constructor
   { value = v; }
   //other functions in class
};
int main(){
   myInteger I1;
   getchar();
   return 0;
}

出力

Gives error about user-defined constructor not being defined

  1. C ++ローカル変数とグローバル変数はデフォルトでどのように初期化されますか?

    以下は、ローカル変数とグローバル変数の両方で同じです。基本的に、変数を宣言するときはいつでも、特に指定しない限り、コンパイラーはデフォルトのコンストラクターを呼び出します。 言語レベルのタイプ(例:pointers、int、float、boolなど) defaultコンストラクタはまったく何もせず、宣言されたときにメモリをそのまま残します。これは、通常、以前にそのメモリに何があったのか、あるいはメモリがどこから来たのかさえわからないため、ほとんど何でもかまいません。 コンストラクターを持たないクラスを作成する場合、コンパイラーは、各メンバー/変数のコンストラクターを呼び出すだけのクラスを作成し

  2. Javaでデフォルトのコンストラクターを作成するにはどうすればよいですか?

    デフォルトコンストラクター(引数なしコンストラクター) no-argコンストラクターはパラメーターを受け入れず、クラス変数をそれぞれのデフォルト値でインスタンス化します(つまり、オブジェクトの場合はnull、floatとdoubleの場合は0.0、ブール値の場合はfalse、byte、short、int、longの場合は0)。 コンストラクターを明示的に呼び出す必要はありません。これらはインスタンス化時に自動的に呼び出されます。 覚えておくべきルール コンストラクターを定義するときは、次の点に注意する必要があります。 コンストラクターには戻り型がありません。 コンストラクターの名前