1. 헤더파일 선언문의 확장자
# include <iostream>
int main (void) {
int num = 20 ;
std :: cout << "hello world!" << std :: endl;
return 0;
}
과거 입력 및 출력에 관한 일을 하기 위해서 .h 의 확장자를 붙여 헤더파일을 선언하였다.
그러나 다음 2가지 이유로 헤더파일의 포함에는 확장자를 생략하기로 한다.
현재 C++ 컴파일러는 <iostream.h>를 지원하지 않는 추세로 접어들었다.
- 과거의 표준 라이브러리와 새로운 표준 라이브러리의 구분
- 새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록
2. 함수 오버로딩 (Function Overlording)
int MyFunc(int num) {
num++;
return num;
}
int MyFunc(int a, int b) {
return a + b;
}
C언어에서는 위의 코드와 같이 동일한 이름의 함수가 정의되는 것을 허용하지 않는다.
C++ 에서는 함수 호출 시 전달되는 인자를 통해서 호출하고자하는 함수의 구분이 가능하다.
이러한 형태의 함수 정의를 함수 오버로딩이라고 한다.
/*호출 시*/
int main (void) {
MyFunc(30, 40);
}
C 컴파일러 : MyFunc 함수명을 가진 함수를 찾아 호출
C++ 컴파일러 : 두개의 int 형 정수를 인자로 받을 수 있는 MyFunc라는 이름의 함수를 호출.
/*Overloading 1*/
int MyFunc (int num) { }
int MyFunc (char c) { }
/*Overloading 2*/
int MyFunc (int n) { }
int MyFunc (int n1, int n2) { }
/*Overloading 3 (잘못된 예시)*/
void MyFunc (int n) { }
int MyFunc (int n) { }
함수 오버로딩의 조건은 매개변수의 자료형 또는 개수가 달라야 한다!
잘못된 예시를 보면 반환형이 다르지만 함수 호출 시, 호출되는 함수를 구분하는 기준이 될 수 없다.
3. 매개변수 디폴트 값 (Default Value)
// 함수의 매개변수를 다음의 형태로 선언하는 것이 가능하다.
int MyFunc(int num = 7) {
num++;
return num;
}
int num = 7 의 매개변수 선언의 의미는 함수 호출 시 인자를 전달하지 않으면 디폴트 값 7을 전달하라는 의미이다.
디폴트 값은 함수의 원형 선언에만 위치시켜야한다.
또한 일부분만 디폴트 값을 지정할 수 도 있다. (오른쪽 매개변수의 디폴트 값을 차례대로 지정)
'Embedded System > 소프트웨어 (C,C++)' 카테고리의 다른 글
[F/W] 펌웨어 구현 시 메모리 관리 (0) | 2024.06.25 |
---|---|
[C++] 참조자 (Reference)/ 참조에 의한 호출(Call-by-reference) (0) | 2024.06.21 |
[F/W] CPU 구조 및 동작 (1) | 2024.06.18 |
[C++] 클래스, 객체 기초 (0) | 2023.08.27 |
[F/W] 메모리 영역 (스택, 힙) (0) | 2023.08.24 |