Programming/C++

C++ : 함수

나무수피아 2025. 4. 28. 12:17
728x90
반응형

함수(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++에서 함수 정의, 호출, 오버로딩, 기본 인자값, 참조 전달, 인라인 함수까지
프로그램을 효율적으로 구성하는 핵심 개념들을 배웠습니다.

728x90
반응형

'Programming > C++' 카테고리의 다른 글

C++ : 포인터와 참조  (0) 2025.04.28
C++ : 배열과 문자열  (0) 2025.04.28
C++ : 제어문  (0) 2025.04.28
C++ : 변수와 자료형  (0) 2025.04.28
C++ : 입출력과 기본 프로그램 구조  (0) 2025.04.28