728x90
✔ 디폴트 매개변수
디폴트 매개변수는 함수 호출에서 실제 매개변수를 생략했을 경우에 실제 매개변수 대신 사용되는 값이다.
int harpo(int n, int m = 4, int j = 5); // 가능
int chico(int n, int m = 6, int j); // 불가능
int groucho(int k = 1, int m = 2, int n = 3); // 가능
✔ 함수 오버로딩
함수 오버로딩(overloading)은 함수의 다형(polymorphism)이라고도 부른다.
함수의 다형은 서로 다른 여러 개의 함수가 하나의 이름을 공유하는 것이다. 여기서 '다형'은 다양한 형태를 가진다는 뜻이다.
함수 오버로딩은 본질적으로는 같은 일을 처리하지만, 매개변수 리스트가 서로 다른 여러 개의 함수를 하나의 이름으로 만들 수 있게 한다.
함수 오버로딩은 편리하지만 과용해선 안되고, 서로 다른 데이터형의 매개변수를 요구하고, 디폴트 매개변수가 소용이 없는 경우에 함수 오버로딩을 사용해야 한다.
✔ 함수 템플릿
함수 템플릿은 함수의 일반화 서술이다. 쉽게말해 int형이나 double형과 같은 구체적인 데이터형을 포괄해서 표현할 수 있는 일반형(generic type)으로 함수를 정의한다.
템플릿은 구체적인 데이터형 대신 일반형으로 프로그래밍 하므로, 이것을 일반화 프로그래밍이라고 한다. 또한 데이터형이 매개변수에 의해 표현되므로 템플릿을 때로는 매개변수화 데이터형(parameterized type)이라고 한다.
template <class Any>
void Swap(Any &a, Any &b)
{
Any temp;
temp = a;
a = b;
b = temp;
}
(C++98표준형에서는 typename이라는 키워드가 추가되어 class라는 키워드를 대체했지만 class라는 오랜 키워드로 사용된 코드들도 많으니 둘다 알아두자)
템플릿은 다양한 데이터형에 동일한 알고리즘을 적용해야 하는 함수가 필요한 경우 사용하면 된다.`
728x90
'📚책읽기' 카테고리의 다른 글
[C++] 랜덤함수, explicit(명시적 데이터형 변환), 변환함수, 프렌드 (friend), 연산자 오버로딩, 오버로딩 제약, Vector클래스 (0) | 2023.02.02 |
---|---|
[C++] 객체 지향 프로그래밍, 클래스, 인터페이스, 클래스 멤버, 데이터 은닉, 캡슐화, 클라이언트-서버 모델, 디폴트 생성자, 파괴자 (0) | 2023.01.30 |
[C++] 인라인 함수, 참조 변수 (0) | 2023.01.24 |
[C++] 가변배열(동적할당 활용) (0) | 2022.04.04 |
[C++] 동적할당(malloc) (0) | 2022.04.04 |