C++ 함수에 기본 매개 변수 사용

Jinku Hu 2023년10월12일
  1. 기본 매개 변수를 사용하여 C++에서 함수 정의
  2. 기본 매개 변수를 사용하여 C++에서 클래스 생성자 구현
C++ 함수에 기본 매개 변수 사용

이 기사에서는 C++에서 함수에 대한 기본 매개 변수를 사용하는 방법에 대한 몇 가지 방법을 설명합니다.

기본 매개 변수를 사용하여 C++에서 함수 정의

기본 매개 변수의 개념은 사용자가 자신의 자리에 인수를 전달하지 않는 경우 사용되는 함수 정의에 기본 인수 값을 지정할 수 있도록합니다. 따라서 함수는 선택적 인수를 가질 수 있으며, 내부적으로 일부 기본값을 사용하여 함수 블록 동안 일부 개체를 초기화 할 수 있습니다. 기본 매개 변수는=기호와 해당 값을 사용하여 각 인수 이름 뒤에 함수 프로토 타입에 지정됩니다. 예를 들어, 다음 코드 스 니펫은 최대 4 개의 숫자를 합할 수있는sumNumbers함수 템플릿을 구현합니다. 그럼에도 불구하고 사용자가 네 가지 값을 모두 제공 할 필요는 없습니다. 반대로, 두 개의 정수만 연산에 충분합니다.

#include <iostream>
#include <string>
#include <utility>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
T sumNumbers(T x, T y, T z = 0, T w = 0) {
  return (x + y + z + w);
}

int main() {
  vector<int> vec = {1, 4, 8, 16, 20, 24, 28, 32};

  for (size_t i = 0; i < vec.size(); ++i) {
    cout << sumNumbers(vec[i], vec[i + 1]) << ": ";
  }
  cout << endl;

  for (size_t i = 0; i < vec.size(); ++i) {
    cout << sumNumbers(vec[i], vec[i + 1], vec[i + 2]) << ": ";
  }
  cout << endl;

  for (size_t i = 0; i < vec.size(); ++i) {
    cout << sumNumbers(vec[i], vec[i + 1], vec[i + 2], vec[i + 3]) << ": ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

출력:

5: 12: 24: 36: 44: 52: 60: 32
13: 28: 44: 60: 72: 84: 60: 32:
29: 48: 68: 88: 104: 84: 60: 4145:

기본 매개 변수를 사용하여 C++에서 클래스 생성자 구현

기본 매개 변수의 개념을 활용할 수있는 또 다른 유용한 시나리오는 클래스 생성자입니다. 경우에 따라 사용자가 인수를 제공하지 않으면 클래스 생성자가 일부 데이터 멤버를 기본값으로 초기화해야 할 수 있습니다. 다음 예제 코드에 설명 된대로 기본값으로 다른 생성자를 호출하는 기본 매개 변수를 사용하여 생성자를 구현할 수 있습니다.

#include <iostream>
#include <string>
#include <utility>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

class MyClass {
  string name;
  int height;
  int width;

 public:
  MyClass(string s, int h, int w) : name(std::move(s)), height(h), width(w) {}
  MyClass() : MyClass("", 0, 0) {}
  explicit MyClass(string s) : MyClass(std::move(s), 0, 0) {}

  void printMyClass() {
    cout << "name: " << name << endl
         << "height: " << height << endl
         << "width: " << width << endl;
  }
};

int main() {
  MyClass M1;
  MyClass M2("Jay", 12, 103);

  M1.printMyClass();
  cout << endl;
  M2.printMyClass();

  return EXIT_SUCCESS;
}

출력:

name:
height: 0
width: 0


name: Jay
height: 12
width: 103
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Function