함수(Function)
1 함수란?
함수(Function)는 특정 작업을 수행하는 코드 블록입니다. 코드를 재사용하고 프로그램을 구조화하는 데 매우 중요합니다.
2 함수 정의와 호출
함수 정의
함수를 만들려면 반환형, 함수명, 매개변수, 본문을 작성해야 합니다.
반환형 함수이름(매개변수) {
// 실행 코드
return 반환값;
}
함수 호출
정의한 함수를 필요할 때 이름으로 호출할 수 있습니다.
#include <iostream>
using namespace std;
// 함수 정의
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 5); // 함수 호출
cout << "결과: " << result << endl;
return 0;
}
3 함수 오버로딩 (Function Overloading)
함수 이름은 같지만 매개변수의 타입이나 개수가 다르면 여러 개 정의할 수 있습니다.
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
cout << add(3, 4) << endl; // int 버전 호출
cout << add(3.5, 4.5) << endl; // double 버전 호출
return 0;
}
📌 Tip: 오버로딩 덕분에 함수 이름을 통일성 있게 관리할 수 있습니다.
4 기본 인자값 (Default Arguments)
함수를 호출할 때 전달하지 않아도 기본으로 사용하는 매개변수 값을 설정할 수 있습니다.
#include <iostream>
using namespace std;
// 기본 인자값 설정
void greet(string name = "손님") {
cout << "안녕하세요, " << name << "님!" << endl;
}
int main() {
greet(); // "손님"으로 호출
greet("철수"); // "철수"로 호출
return 0;
}
⚠️ 주의: 기본 인자는 선언부 또는 정의부 중 하나에서만 작성해야 합니다.
5 참조 전달 (Reference Passing)
&
를 사용하면 함수 안에서 매개변수의 원본 값을 직접 수정할 수 있습니다.
#include <iostream>
using namespace std;
void increase(int &num) {
num++;
}
int main() {
int a = 5;
increase(a);
cout << "a = " << a << endl; // 6 출력
return 0;
}
📌 Tip: 참조 전달을 이용하면 복사 비용 없이 원본 데이터를 직접 다룰 수 있습니다!
6 인라인 함수 (inline)
짧은 함수의 경우 컴파일러가 함수 호출 대신 코드를 직접 삽입해 성능을 최적화할 수 있습니다.
#include <iostream>
using namespace std;
inline int square(int x) {
return x * x;
}
int main() {
cout << "4의 제곱은: " << square(4) << endl;
return 0;
}
⚠️ 주의: 인라인 함수는 코드가 커지면 오히려 프로그램 크기가 커질 수 있습니다.
마무리
이번 시간에는 C++에서 함수 정의, 호출, 오버로딩, 기본 인자값, 참조 전달, 인라인 함수까지
프로그램을 효율적으로 구성하는 핵심 개념들을 배웠습니다.