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
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