반응형
디폴트 파라미터
C++에서는 함수의 매개변수에 기본값을 설정할 수 있음.
이를 디폴트 파라미터라고 하며, 호출자가 특정 인자를 생략할 경우 기본값이 자동으로 적용됨.
단, 디폴트 매개변수는 반드시 오른쪽부터 선언해야 하며, 여러 개의 디폴트 값을 지정할 경우 연속해서 선언해야 함.
int add(int a, int b = 10) {
return a + b;
}
int main() {
cout << add(5) << endl; // 15 (5 + 10)
cout << add(5, 20) << endl; // 25 (5 + 20)
}
함수 다중 정의 (Overloading)
함수 다중 정의는 동일한 함수명을 사용하면서 서로 다른 매개변수 목록을 가지는 여러 함수를 정의하는 기능을 의미함.
다만, 반환값의 타입만 다른 경우는 함수 다중 정의가 불가능함.
int sum(int a, int b) {
return a + b;
}
double sum(double a, double b) {
return a + b;
}
함수 템플릿
템플릿은 코드의 중복을 줄이면서 다양한 타입을 지원할 수 있도록 하는 기능을 제공함.
함수 템플릿을 사용하면 특정 타입에 관계없이 동작하는 일반화된 함수를 만들 수 있음.
template <typename T>
T add(T a, T b) {
return a + b;
}
네임스페이스
C++에서 네임스페이스는 변수나 함수를 그룹화하여 이름 충돌을 방지하는 역할을 수행함.
네임스페이스를 정의할 때는 namespace 키워드를 사용하며, :: 연산자를 이용하여 특정 네임스페이스의 멤버에 접근할 수 있음.
namespace MyNamespace {
int value = 10;
}
int main() {
cout << MyNamespace::value << endl; // 10
}
식별자 검색 순서
C++에서는 특정 식별자가 검색될 때 다음과 같은 순서로 탐색이 진행됨.
- 현재 블록 범위
- 상위 블록 (최대 함수 바디)
- 최근에 선언된 전역 변수나 함수
- using 선언된 네임스페이스 혹은 전역 네임스페이스
Name Mangling
C++에서는 함수 다중 정의(overloading)를 지원하기 위해 함수명을 내부적으로 변환하는 기법을 사용함. 이를 Name Mangling이라고 하며, 각 함수의 매개변수 타입을 기반으로 고유한 식별자를 생성함.
반응형
'SW개발 > C++' 카테고리의 다른 글
6장. 복사 생성자와 임시 객체 (0) | 2025.02.26 |
---|---|
5장. 클래스 (0) | 2025.02.26 |
3장. C++의 주요 기본 개념 (0) | 2025.02.11 |
2장. C와 C++의 차이 (0) | 2025.02.11 |
1장. C만 배워본 내가 C++을 시작 (0) | 2025.02.11 |