반응형
📌 요약: 함수 정의 | 함수 오버로딩 | 인라인 함수 | 전방선언 | 호출 순서와 컴파일/링크 오류
🧠 함수 (Function)
함수는 특정 동작을 수행하는 코드 묶음이며, 반복적이고 재사용 가능한 구조로 프로그램을 효율적으로 구성할 수 있도록 도와줍니다.
✅ 함수 기본 구조
기본적인 함수 정의는 다음과 같은 형식으로 구성됩니다:
반환형 함수이름(매개변수목록) {
// 함수 내용
}
void Func1() {
// 아무 동작 없음
}
int Add(int left, int right) {
return left + right;
}
int Sub(int left, int right) {
return left - right;
}
🌀 함수 오버로딩
함수 오버로딩은 같은 이름의 함수를 매개변수 타입이나 개수를 다르게 정의하여 구분하는 기법입니다.
int Multi(int left, int right) {
return left * right;
}
float Multi(float left, float right) {
return left * right;
}
double Multi(double left, double right) {
return left * right;
}
⚡ 인라인 함수
inline 함수는 함수 호출 대신 코드 자체를 복사하여 삽입합니다. 반복적으로 호출되는, 짧은 함수에 주로 사용됩니다.
단, 최신 컴파일러는 자동 인라인 최적화를 수행하므로 inline 키워드 사용 빈도는 줄었습니다.
inline int Bigger(int left, int right) {
return left > right ? left : right;
}
📦 함수 전방선언
함수를 사용하기 전에 선언만 미리 해두는 것을 전방선언이라고 합니다.
선언만 있고 정의가 없을 경우 **링크 에러**, 정의 없이 호출하면 **컴파일 에러**가 발생합니다.
// 선언만 먼저
int Func0_1(int param1, int param2 = 10);
void Func0_2(); // 정의가 없으면 링크 에러 발생
// 정의는 나중에
int Func0_1(int param1, int param2) {
return param1 + param2;
}
🔁 함수 호출 및 호출 순서 오류 예시
int main() {
cout << "Func0_1 : 5 : " << Func0_1(5) << endl;
cout << "Func0_1 : 5, 20 : " << Func0_1(5, 20) << endl;
// Func0_3 error : 컴파일 에러 - 구현보다 먼저 호출됨
Func0_3();
return 0;
}
// 정의는 아래에 있으므로 컴파일 에러 발생
void Func0_3() { }
Func0_3()는 정의가 뒤에 있음에도 전방선언이 없어 컴파일 에러가 발생합니다.
함수를 호출할 때는 반드시 **선언이 먼저** 되어 있어야 합니다.
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 7. 메모리 (0) | 2025.03.29 |
|---|---|
| [C++] 6. 포인터 (0) | 2025.03.29 |
| [C++] 4. 반복문 (0) | 2025.03.29 |
| [C++] 3. 조건문 (0) | 2025.03.29 |
| [C++] 2. 연산자(2) (0) | 2025.03.29 |