C++にはこのような特別な関数があり、クラス内のクラス名と同じ名前の関数であり、戻り値を持たないため、クラスのオブジェクトを定義すると、システムが自動的にそれを呼び出して特別な初期化を行います。ほとんどの場合、コンストラクターを定義しないため、システムはデフォルトでデフォルトのフォームと非表示のコンストラクターを生成します。このコンストラクターの関数本体は空であるため、関数はありません。
次に、独自のコンストラクターを定義する方法を説明します。ユーザーは少なくとも 1 つのコンストラクターを自分で定義する必要があります。システムは自動的にコンストラクターを生成しませんが、ユーザー定義のコンストラクターに基づいて最も一致するコンストラクターを選択します。 。
たとえば、引き続き Student クラスを使用して、デフォルトのパラメーターを持つコンストラクターを追加します。コードは次のとおりです。
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//学生番号 charname[100];//名前 intscore;//スコア public:Student(intn,char*str,ints);intprint( );intSet(intn,char*str,ints);};Student::Student(intn,char*str,ints){num=n;strcpy(name,str);score=s;cout<<コンストラクター<< endl;}intStudent::print(){cout<<num<<<<name<<<<score;return0;}intStudent::Set(intn,char*str,ints){num=n;strcpy(name, str);score=s;}intmain(){StudentA(100,dotcpp,11);A.print();return0;}
つまり、初期化関数を実現するためにコンストラクターを定義すると同時に呼び出すことができます。その動作は次のとおりです。
クラス内にデフォルトのパラメータを持つコンストラクタを定義しているため、この時点では、コンストラクタはオブジェクトを定義するときに 3 つのデフォルトの初期値を渡す必要があることに注意してください。オーバーロードを行うと、システムは最も一致する関数を見つけますが、デフォルトのパラメーターを持つコンストラクターとして定義されていない場合は、エラーが報告されます。ご自身で実験してください。