인수가 없거나 모든 인수에 대한 기본값을 갖는 생성자를 생성자라고 합니다. 기본 생성자 .
매개변수 목록이 없는 생성자 또는 다른 의미에서 인수를 허용하지 않는 생성자를 인수가 없는 생성자 또는 기본 생성자라고 합니다.
프로그래머가 소스 코드에 기본 생성자를 정의하지 않은 경우 컴파일러는 컴파일 중에 기본 생성자를 암시적으로 정의한 것입니다.
프로그래머가 프로그램에서 기본 생성자를 명시적으로 정의한 경우 컴파일러는 생성자를 암시적으로 정의하지 않고 생성자를 암시적으로 호출합니다.
기본 생성자의 중요성은 무엇입니까?
C 언어로 작성된 매트릭스 프로그램
특정 초기 값이 없는 개체를 만드는 데 사용됩니다.
기본 생성자가 자동으로 제공되나요?
클래스에 생성자가 명시적으로 선언되지 않은 경우 컴파일러에서 자동으로 기본 생성자를 제공합니다.
기본 생성자에 기본 인수가 포함될 수 있나요?
예, 생성자는 객체의 기본값이 포함된 기본 인수를 포함할 수 있습니다.
컴파일러가 사용자가 구현한 기본 생성자에 배후에 삽입된 코드가 있습니까?
프로그래머가 제공하지 않은 경우 컴파일러는 기본 생성자를 암시적으로 선언하고 필요할 때 정의합니다. 클래스 내부의 특정 초기화를 수행하려면 컴파일러에서 정의한 기본 생성자가 필요합니다. 데이터 멤버나 기존의 일반 데이터 유형(배열, 구조 등과 같은 집계)은 건드리지 않습니다. 그러나 컴파일러는 상황에 따라 기본 생성자에 대한 코드를 생성합니다.
기본 생성자를 사용하여 다른 클래스에서 파생된 클래스 또는 기본 생성자를 사용하여 다른 클래스 객체를 포함하는 클래스를 고려해 보세요. 컴파일러는 기본 클래스/포함 개체의 기본 생성자를 호출하는 코드를 삽입해야 합니다.
C++
// CPP program to demonstrate Default constructors> #include> using> namespace> std;> class> Base {> public> :> > // compiler 'declares' constructor> };> class> A {> public> :> > // User defined constructor> > A() { cout <<> 'A Constructor'> << endl; }> > // uninitialized> > int> size;> };> class> B :> public> A {> > // compiler defines default constructor of B, and> > // inserts stub to call A constructor> > // compiler won't initialize any data of A> };> class> C :> public> A {> public> :> > C()> > {> > // User defined default constructor of C> > // Compiler inserts stub to call A's constructor> > cout <<> 'C Constructor'> << endl;> > // compiler won't initialize any data of A> > }> };> class> D {> public> :> > D()> > {> > // User defined default constructor of D> > // a - constructor to be called, compiler inserts> > // stub to call A constructor> > cout <<> 'D Constructor'> << endl;> > // compiler won't initialize any data of 'a'> > }> private> :> > A a;> };> // Driver Code> int> main()> {> > Base base;> > B b;> > C c;> > D d;> > return> 0;> }> |
>
>산출
A Constructor A Constructor C Constructor A Constructor D Constructor>
C++
Example:> #include> using> namespace> std;> class> student> {> > int> rno;> > char> name[50];> > double> fee;> > public> :> > student()> // Explicit Default constructor> > {> > cout<<> 'Enter the RollNo:'> ;> > cin>>아노;> > cout<<> 'Enter the Name:'> ;> > cin>>이름;> > cout<<> 'Enter the Fee:'> ;> > cin>>수수료;> > }> > > void> display()> > {> > cout<' '<' '< } }; int main() { student s; s.display(); return 0; }> |
>
포스트그레스의 직렬
>
언어 요구 사항에 따라 필요한 초기화를 보장하기 위해 컴파일러가 코드를 삽입해야 하는 다양한 시나리오가 있습니다. 우리는 다가오는 게시물에서 그것들을 다룰 것입니다. 우리의 목표는 C++ 내부를 인식하는 것이지, 이를 잘못 사용하는 것이 아닙니다.
C++
// CPP code to demonstrate constructor can have default> // arguments> #include> using> namespace> std;> class> A {> public> :> > int> sum = 0;> > A();> // default constructor with no argument> > A(> int> a,> int> x = 0)> // default constructor with one> > // default argument> > {> > sum = a + x;> > }> > void> print() { cout <<> 'Sum ='> << sum << endl; }> };> int> main()> {> > // This construct has two arguments. Second argument is> > // initialized with a value of 0 Now we can call the> > // constructor in two possible ways.> > A obj1(10, 20);> > A obj2(5);> > obj1.print();> > obj2.print();> > return> 0;> }> |
>
>산출
Sum =30 Sum =5>
설명 : 여기에는 두 개의 매개변수(단순 매개변수와 하나의 기본 매개변수)가 있는 생성자가 있습니다. 이제 이 생성자를 호출하는 방법에는 두 가지가 있습니다.
- 먼저 두 인수 모두에 값을 할당할 수 있으며 이 값은 생성자에 전달되고 값이 0인 기본 인수 x는 호출하는 동안 전달된 값(이 경우 20)으로 재정의됩니다. 따라서 코드는 30의 출력을 제공합니다(합계= a+x, 즉 10+20= 30).
- 두 번째 방법은 기본 매개변수에 어떤 값도 전달하지 않는 것입니다. 그렇게 하면 x는 기본값 0을 최종 값으로 사용하고 합계 5를 계산합니다(예: 합계 = a+x, 즉 5+0=5).