함수는 입력을 받아 처리하고 결과를 반환하는 독립적 코드 블록입니다. 반복 작업을 함수로 캡슐화하면 코드 중복 방지, 다른 매개변수 공급으로 프로그램 전반 또는 프로젝트 간 로직 재사용 용이.
모든 C++ 애플리케이션은 최소 하나의 함수 main() 포함. 나머지 코드는 목적별 소규모 함수로 구성해 가독성·유지보수성 향상.
현대 C++ 표준 라이브러리 풍부한 내장 함수 제공. 직접 구현 없이 호출만으로 사용 가능.
이 튜토리얼에서 다룰 내용:
C++ 함수 정의와 필요성
내장 라이브러리 함수
사용자 정의 함수
함수 선언/프로토타입
함수 정의
문법과 구조
함수 호출
인자 전달
함수 사용 이유
함수 다중 이점:
관련 문장 그룹화로 코드 읽기·이해 용이.
반복 제거로 오류 가능성 감소.
동일 함수 호출로 프로그램 여러 부분 또는 프로젝트 간 코드 재사용 가능.
내장 함수
표준 라이브러리 함수는 사전 정의돼 바로 사용. 구현 제공 불필요.
예제 1: cmath의 sqrt() 사용
#include <iostream> #include <cmath> using namespace std; int main() { double num, squareRoot; cout << "Enter number: "; cin >> num; squareRoot = sqrt(num); cout << "The square root of " << num << " is: " << squareRoot; return 0; }
출력:
실행 프로그램 스크린샷:
코드 분석:
iostream 입출력 함수 포함.
cmath로 sqrt() 접근.
std 네임스페이스 사용으로 표준 이름 접두사 생략.
main() 함수에서 프로그램 로직.
num, squareRoot를 double 선언.
사용자 숫자 입력 요청.
입력 num 읽기.
sqrt() 호출로 num 제곱근 계산.
결과 출력.
성공 실행을 0 반환으로 알림.
사용자 정의 함수
개발자가 애플리케이션 특화 로직 캡슐화 위해 커스텀 함수 생성 가능.
예제 2: 간단한 인사 함수
#include <iostream> using namespace std; void sayHello() { cout << "Hello!"; } int main() { sayHello(); return 0; }
출력:
코드 스크린샷:
설명:
iostream 콘솔 I/O 포함.
std 네임스페이스 스코프 진입.
sayHello() 인사 출력 함수 정의.
main()에서 sayHello() 호출.
성공 종료로 0 반환.
함수 선언/프로토타입
함수가 main() 이후 정의되면 컴파일러가 시그니처 미리 알 필요. 프로토타입이 본문 없이 인터페이스 정보 제공.
프로토타입 예:
int addFunc(int, int);
반환 타입, 함수 이름, 매개변수 타입만 필수; 매개변수 이름은 선택.
함수 정의
프로토타입이 인터페이스 알리면 정의가 실행 본문 제공.
정의 예:
int addFunc(int num1, int num2) { return num1 + num2; }
문법
return_datatype function_name(parameter_list) { // function body }
핵심 구성요소:
return_datatype – 반환 값 타입(없으면 void).
function_name – 함수 시그니처 일부인 식별자.
parameter_list – 타입 지정된 0개 이상 매개변수.
function body – 작업 수행 문장들.
함수 호출
함수 실행 위해 이름 호출 및 필수 인자 제공.
호출 예:
int result = addFunc(3, 5);
인자 전달
인자는 함수 매개변수 리스트와 개수·타입 모두 일치해야. 불일치 시 컴파일 에러.
기본 매개변수 값 지정으로 호출자 인자 생략 허용.
예제 3: 프로토타입으로 두 수 더하기
#include <iostream> using namespace std; int addFunc(int, int); // 프로토타입 int main() { int x, y, sum; cout << "Enter two numbers: "; cin >> x >> y; sum = addFunc(x, y); cout << "The sum of " << x << " and " << y << " is: " << sum; return 0; } int addFunc(int num1, int num2) { return num1 + num2; }