C++의 기본 생성자와 기본 키워드

Suraj P 2023년10월12일
C++의 기본 생성자와 기본 키워드

이 기사에서는 C++의 기본 생성자와 새로 도입된 default 키워드에 대해 설명합니다.

먼저 C++의 기본 생성자에 대해 알아봅시다. 기본 생성자는 인수가 없고 클래스의 데이터 멤버에 기본값을 설정하는 데 사용되는 특별한 종류의 생성자입니다.

예:

class demo {
  int age;
  int id;

 public:
  demo() {
    age = 10;
    id = 1;
  }
};

C++의 Default 키워드 및 기본 함수

C++ 11 버전은 =default 지정자의 도움으로 기본 함수를 명시적으로 선언하는 새로운 형태의 함수 선언 방식을 도입했습니다. 함수 선언 끝에 이것을 추가하여 기본 함수를 명시적으로 선언할 수 있습니다.

함수를 명시적으로 기본값으로 설정하면 컴파일러가 기본 구현을 생성하도록 강제하므로 이점이 있습니다. 그리고 효율성 측면에서 수동으로 구현한 기능보다 낫습니다.

예를 들어 클래스에서 매개변수화된 생성자를 생성할 때 컴파일러는 프로그램에서 기본 생성자를 생성하거나 추가하지 않습니다. 이러한 경우 =default를 사용하여 기본 생성자를 만들 수 있습니다.

예제 코드:

#include <bits/stdc++.h>
using namespace std;

class demo {
 public:
  int x;

  demo(int temp)  // parameterized constructor
  {
    x = temp;
  }

  demo() = default;
};

int main() {
  demo d;  // uses default constructor

  demo d2(200);  // uses parameterized constructor
}

매개변수화된 생성자 다음에 =default 지정자를 사용하여 컴파일러가 생성자의 기본 버전을 생성하도록 강제한 것을 볼 수 있습니다. 그리고 =default를 사용할 때 생성자의 본문을 지정할 필요가 없다는 것을 알 수 있습니다.

함수의 {}(빈 본문)을 사용하는 것보다 =default를 사용하는 또 다른 이유는 코드의 가독성을 높이기 위함입니다.

=default 지정자를 처리할 때 한 가지 규칙은 함수에 기본 인수가 없어야 한다는 것입니다. 기본 생성자, 복사 생성자 또는 소멸자와 같은 특수 멤버 함수만 기본값으로 설정할 수 있습니다.

예제 코드:

#include <bits/stdc++.h>
using namespace std;

class demo {
 public:
  int add() = default;

  demo(float, float) = default;

  demo(int = 0) = default;
};

int main() {
  demo d2(200, 300);  // uses parameterized constructor
}

출력:

[Error] 'int demo::add()' cannot be defaulted
[Error] 'demo::demo(float, float)' cannot be defaulted
[Error] 'demo::demo(int)' cannot be defaulted

위의 이유는 첫 번째 함수와 두 번째 함수인 add()demo(float,float)가 특수 멤버 함수가 아니고 세 번째 함수인 demo(int = 0)에 일부 멤버 함수가 있기 때문에 작동하지 않습니다. 기본 인수. 따라서 이러한 기능은 =default를 사용하여 기본값을 설정할 수 없습니다. 따라서 컴파일 오류가 발생합니다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

관련 문장 - C++ Constructor