간단한 예제로 우선, 개념적인 부분을 정리합니다.
#include <iostream> - > C 와 헤더 선언 방식이 달라졌지요 !
using namespace std; - > STD 라는 이름공간을 사용한다 선언함으로써 입출력함수를 사용하기 편해 집니다.
int main(void)
{
return 0;
}
쳅터 1. 함수 오버로딩
함수 오버로딩이란 ? : 동일한 이름의 함수를 중복해서 정의하는 것 !
함수 오버로딩의 조건 은? : 매개 변수의 개수 혹은 타입이 일치하지 않아야 한다.
예를 들자면, void FUNC(int num); , void FUNC( int num, char name ); 과 같이
똑같은 함수 이름인데도, 매개변수가 다르면, 오버로딩해서 사용할 수 있다!
2. 디폴트 매개변수
-> 전달되지 않은 인자를 대신하기 위한 기본값이 설정되어 있는 변수 이다 .
예) int FUNC(int num = 0 ) {..} FUNC함수 호출시 매개변수가 없으면 0으로 초기화된다.
디폴트 매개변수 VS 함수 오버로딩 상태를 만들지 말아라 !
디폴트매개변수 시, 인자값이 VOID 와 마찬가지가 되므로, 혼동을 초래할 수 있는 일은 삼가하는게 좋다.
쳅터2. 인- 라인 함수
C 언어의 define 매크로의 장점을 그대로 반영, 컴파일러가 처리한다.
즉 간단한 함수나, 변동될 수 있는 값을 매크로로 정의 하여, 컴파일 시 일괄 처리되도록 하는
프로그래머의 편의를 위한 함수 이다.
쳅터3. Const 키워드의 의미.
-> const 키워드는, 변수를 상수화 시키는 의미를 갖는다. 타 지역에서 변경될 소지가 있거나,
변경되어서는 안되는 변수를 지정 하여 상수화 시키는 키워드 이다.
키워드의 위치에 따라 의미가 달라지며,
const int* ptr n; = 맨 앞에 const 가 붙을 경우, 포인터가 가르키는 공간의 대상,
즉 데이터 값을 상수화 시킨다.
int* const n : n이라는 포인터를 상수화 시킨다. 즉 가르키는 공간을 변경할 수 없다.
1. Stack 의 의미
-> 지역 변수, 매개 변수 , 컴파일 타임 크기 결정 됨
2. Heap 의 의미
-> 프로그래머 를 위해 할당된 공간, 런 타임 크기 결정
3. 데이터 영역의 의미
-> 전역변수, static 변수 , 코드 바이너리
Heap 은, 프로그래머가 할당 하여 사용할 수 있는 공간이다.
이러한 공간이 필요한 이유는, 컴파일 타임 때 크기를 결정하지 못 할 경우,
즉 런타임 중에 크기가 결정 될 메모리 공간을 올리기 위해 필요하다.