C++에는 이러한 특수 함수가 있습니다. 클래스의 클래스 이름과 동일한 이름을 가지며 반환 값이 없는 함수입니다. 클래스의 객체를 정의하는 한 시스템은 특수 초기화를 위해 자동으로 이를 호출합니다. 대부분의 경우 생성자를 정의하지 않기 때문에 시스템은 기본적으로 기본 양식과 숨겨진 생성자를 생성합니다. 따라서 이 생성자의 함수 본문은 비어 있으므로 함수가 없습니다.
다음으로 사용자가 직접 생성자를 하나 이상 정의해야 합니다. 시스템은 더 이상 자동으로 생성자를 생성하지 않지만 사용자 정의 생성자를 기반으로 호출할 가장 일치하는 생성자를 선택합니다. .
예를 들어 여전히 Student 클래스를 사용하면 코드는 다음과 같습니다.
#include<iostream>#include<Cstring>usingnamespacestd;classStudent{private:intnum;//학생 번호 charname[100];//name intscore;//score 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개도 전달해야 합니다. 오버로딩하면 시스템이 가장 일치하는 함수를 찾게 되지만, 기본 매개변수가 있는 생성자로 정의되지 않은 경우 오류가 보고됩니다. 직접 실험해 보세요.