C++ 템플릿 - 가변 인자

진경천·2023년 10월 30일
0

C++

목록 보기
71/90

C style 가변 인자

#include <iostream>
#include <cstdarg>

using std::cout, std::endl;

int sum(int count...) {
	int result = 0;
	va_list args;
	va_start(args, count);
	for (int i = 0; i < count; i++) {
		result += va_arg(args, int);
	}
	va_end(args);
	return result;
}

int main() {
	cout << sum(4, 10, 20, 30, 40) << endl;
}

C++에서의 가변 인자

#include <iostream>
#include <cstdarg>

using std::cout, std::endl;

template <typename T>
T sum(T value) {
	return value;
}

template<typename T, typename... Args>
T sum(T value, Args... args) {
	return value + sum(args...);
}
// sum(args...)에서 위의 sum 함수를 호출하여 값을 더해준다. 
int main() {
	cout << sum(10, 20, 30, 40) << endl;
}
  • 실행 결과

    100

    위 결과를 보았을 때 sum 함수가 return 하는 값이 for문이 실행 될 때 마다 바뀌는 것을 알 수 있다.

int main() {
	cout << sum(10, 20.6, 30, 40) << endl;
}
  • 100
int main() {
	cout << sum(10.3, 20.6, 30, 40) << endl;
}
  • 100.9

    처음 받는 인자의 타입에 따라 반환 type T가 달라져 반환하는 타입이 달라진다.

profile
어중이떠중이

0개의 댓글