사용자 정의 함수, 프로토타입, 매개변수, 반환 타입, 표준 라이브러리 함수까지 C++ 함수의 기초를 실전 예제로 학습하세요.
함수는 특정 작업을 수행하는 독립적인 코드 블록입니다. 복잡한 문제를 작고 재사용 가능한 함수로 분해하면 가독성, 유지보수성, 테스트 용이성이 향상됩니다.
C++에는 두 가지 함수 범주가 있습니다:
표준 라이브러리 함수 – 언어가 미리 정의(예: sqrt(), abs())
사용자 정의 함수 – 개발자가 직접 작성해 맞춤 로직 캡슐화
본문은 사용자 정의 함수에 집중해 문법, 호출, 모범 사례를 다룹니다.
C++ 사용자 정의 함수
C++에서는 반환 타입, 이름, 선택적 매개변수로 명확한 시그니처를 가진 함수를 정의합니다.
함수 선언 문법
returnType functionName(parameter1, parameter2, ...) {
// 함수 본문
}
예: void greet()는 인사말을 출력. 빈 괄호는 매개변수 없음 의미.
// 함수 선언
void greet() {
cout << "Hello World";
}
핵심 포인트:
함수명: greet()
반환 타입: void (반환값 없음)
매개변수: 없음 (빈 괄호)
본문: {} 안의 코드
참고: 반환 타입과 매개변수는 뒤에서 자세히 다룹니다.
함수 호출하기
greet()를 사용하려면 필요한 곳에서 호출하면 됩니다.
int main() {
greet();
}
예제 1: 텍스트 출력
#include <iostream>
using namespace std;
void greet() {
cout << "Hello there!";
}
int main() {
greet();
return 0;
}
실행 결과
Hello there!
함수 매개변수
매개변수는 함수에 전달될 값을 위한 플레이스홀더입니다.
void printNum(int num) {
cout << num;
}
printNum 호출 시 인수 전달:
int main() {
int n = 7;
printNum(n);
return 0;
}
예제 2: 다중 매개변수 함수
#include <iostream>
using namespace std;
void displayNum(int n1, float n2) {
cout << "The int number is " << n1;
cout << "The double number is " << n2;
}
int main() {
int num1 = 5;
double num2 = 5.5;
displayNum(num1, num2);
return 0;
}
실행 결과
The int number is 5
The double number is 5.5
인수 타입이 선언된 매개변수와 일치해야 합니다.
반환 문
함수는 값을 반환할 수 있습니다. 반환 타입 지정 후 return으로 결과 제공.
int add(int a, int b) {
return a + b;
}
add 호출 후 결과 저장:
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
예제 3: 두 수 더하기
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
return 0;
}
실행 결과
100 + 78 = 178
함수 프로토타입
함수가 첫 사용 뒤에 정의되면 프로토타입으로 컴파일러에 시그니처를 알립니다.
// 프로토타입
void add(int, int);
int main() {
add(5, 3);
return 0;
}
// 정의
void add(int a, int b) {
cout << (a + b);
}
#include <iostream>
using namespace std;
int add(int, int);
int main() {
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
return 0;
}
int add(int a, int b) {
return a + b;
}
실행 결과
100 + 78 = 178
사용자 정의 함수의 이점
캡슐화: 관련 코드를 단일 재사용 블록으로 묶음
가독성: 복잡한 로직을 설명적인 함수로 분해
유지보수: 한 곳만 수정하면 모든 호출 지점에 반영
테스트 용이성: 기능을 격리해 단위 테스트 가능
표준 라이브러리 함수
C++ 표준 라이브러리는 일반적인 작업을 단순화하는 풍부한 즉시 사용 함수를 제공합니다. 예: sqrt(), abs(), isdigit().
라이브러리 함수 사용 시 해당 헤더 포함 필요. 수학 연산은 #include <cmath>로 sqrt(), pow() 등 사용 가능.
예제 5: 제곱근 계산
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double number = 25.0;
double squareRoot = sqrt(number);
cout << "Square root of " << number << " = " << squareRoot;
return 0;
}
실행 결과
Square root of 25 = 5
sqrt() 선언은 cmath 헤더에 있으므로 #include <cmath> 지시자가 필요합니다.