C++에서 기본 매개변수 재정의

Syed Hassan Sabeeh Kazmi 2023년10월12일
  1. C++에서 기본 매개변수 오류의 재정의를 처리하기 위해 함수 선언에 인수 지정
  2. C++에서 기본 매개변수 오류의 재정의를 처리하기 위해 함수 정의에 인수 지정
C++에서 기본 매개변수 재정의

이 자습서에서는 C++에서 기본 매개변수 오류의 재정의를 처리하는 방법을 배웁니다. C++의 기본 인수는 메서드나 함수의 선언 또는 정의에 지정해야 하지만 중복 때문에 둘 다에 지정해서는 안 됩니다.

C++에서 기본 매개변수 오류의 재정의를 처리하기 위해 함수 선언에 인수 지정

기본 매개변수의 재정의 오류를 일으키는 원인은 헤더 파일의 재정의인데, 이는 부모 파일에서 매번 호출되어 함수 또는 메서드를 여러 번 재정의하게 됩니다.

그러나 템플릿이 아닌 함수(또는 메서드)에 대해 동일한 범위에 있는 함수(또는 메서드)의 이후 선언에서 기본 인수를 추가할 수 있습니다. 선언에는 서로 다른 범위에서 완전히 다른 기본 인수 세트가 있습니다.

기본 인수가 있는 매개변수 다음의 각 매개변수에는 제공된 기본 인수, 이전 선언 또는 주어진 함수 선언의 함수 매개변수 팩이 있어야 합니다. 기본 매개변수 재정의 오류는 선언뿐만 아니라 정의(구현)에서도 기본 매개변수를 설정할 때 발생합니다.

코드 예:

#include <iostream>

// to process variables whenever called
void print(int x, int y) {
  std::cout << "x: " << x << '\n';  // x output
  std::cout << "y: " << y << '\n';  // y output
}

int main() {
  // function declaration
  void print(int x, int y = 3);

  print(7, 4);  // in this case, `y` is user-defined variable hence default
                // argument will be neglected
  print(6);  // in this case, `y` has no user-defined value hence, it will use
             // default argument
}

출력:

x: 7
y: 4
x: 6
y: 3

함수(또는 메서드)에 매개변수가 두 개 이상 있는 경우에는 void my_function (int a, char b);과 같이 기본값이 아닌 모든 매개변수 뒤에 기본값이 지정된 매개변수를 나열해야 합니다.

C++에서 기본 인수는 부울 매개변수의 타르핏을 직접 유발하지 않지만 이러한 인수는 해로운 영향을 더욱 악화시키므로 결과적으로 부울 타르핏은 처리하기가 매우 복잡해집니다.

C++에서 기본 매개변수 오류의 재정의를 처리하기 위해 함수 정의에 인수 지정

함수 호출은 함수 매개변수에 기본 인수가 있는 경우 호출자로부터 모든 함수 매개변수에 대한 인수를 검색할 수 있으며 호출자가 인수를 제공하지 않는 경우 해당 특정 매개변수의 기본 인수 값이 대신 사용됩니다. . 기본 인수는 일단 선언되면 중복으로 인해 다시 선언할 수 없습니다. 즉, 기본 인수는 함수 정의에서 선언할 수 있습니다.

기본 매개변수의 정방향 선언은 함수 정의에서 선언하는 대신 기본 인수를 선언하는 모범 사례 중 하나입니다.

코드 예:

#include <iostream>

void print(int x, int y = 4)  // 4 is the default argument
{
  std::cout << "x: " << x << '\n';
  std::cout << "y: " << y << '\n';
}

int main() {
  print(1, 2);  // y will use user-supplied argument 2
  print(3);     // y will use default argument 4
}

// in case of multiple default arguments
void printmulti(int x = 10, int y = 20, int z = 30) {
  std::cout << "x: " << x << '\n';
  std::cout << "y: " << y << '\n';
  std::cout << "z: " << z << '\n';
}

출력:

x: 1
y: 2
x: 3
y: 4

기본 인수는 함수(또는 메서드) 선언에서 구문적으로 나타나지만 기본 인수 자체는 번역 단위당 하나만 있어야 한다는 점에서 정의처럼 작동합니다. 함수 정의에서 기본 인수 값을 반복할 수 없습니다. 즉, 구현 사이트에서 함수 인터페이스의 일부가 보이지 않습니다.

한 곳에서의 기본 인수 정의와 다른 곳에서의 평가는 이름 조회, 액세스 제어 및 템플릿 인스턴스화와 같은 중간에 있는 C++ 측면에 대한 혼란을 초래합니다.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

관련 문장 - C++ Function