본문 바로가기

교육 노트/C++ 기초강의

[C++ 때려 잡기] C++ 기초강의 2-advanced-2 헤더와 CPP, 디폴트 파라미터, static 변수

2018/08/24 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 2-1 함수의 선언과 정의

2018/08/25 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 2-2 함수 오버로딩

2018/08/25 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 2-3 call by value / call by reference

2018/08/26 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 2-4 재귀함수

2018/08/26 - [교육 노트/C++ 기초강의] - [C++ 때려 잡기] C++ 기초강의 2-advanced-1 랜덤



1. 헤더와 cpp


함수의 선언과 정의를 따로 나눠놓아도

함수가 많아지면 main 함수가 밑으로 내려가게 되고

또한 한 파일에 너무 많은 정보를 가지고 있어

난잡해진다


해당 문제를 해결하기위해 CPP 에서는 *.h (해더) , *.cpp (cpp) 파일을 분리하여 관리한다.


와 같은  코드가 존재하면


선언과 cpp를 따로따로 각각 헤더파일과 cpp파일로 따로 분리한다.


여기서는 이름을 calc로 해서 calc.h 와 calc.cpp 로 분리하겠다.

또한 cpp파일의 최상단에 #include "calc.h" 를 추가해 cpp에서 헤더파일에 있는 내용을 정의 할 수 있도록 한다.


해당 과정이 끝나면

이 파일을 main 함수가있는 파일에서 사용가능하도록 하기위해

직접 만든 calc.h을 인클루드한다






2. 디폴트 파라미터


파라미터값을 미리 채워 넣는 것으로
해당 파라미터에 값이 아무 값도 들어가지 않으면
미리 채워둔 값으로 들어간다


예를들어 두개의 int값을 더하는 plus함수를 만들었는데

이 함수가 하나의 값만 들어오면 그냥 그 값에 1을 더하는 i++ 과같은 작용을 했으면 좋겠을때

함수 오버로딩을 통하여 다른 함수를 제작해도 되지만

plus(변수,1) 과 동일한 역할을 하는 함수이므로

두번째 변수는 아무값도 안들어오면  자동으로 1로 채워놓으면 된다,

해당 기능을 해주는것이 디폴트 파라미터이다.



다음과 같이 함수 선언에 y값은 1로 미리 지정해놓으면 값이들어오면 해당 값을 이용하지만

아무값도 들어오지 않으면 자동으로 1로 초기화된다.



디폴트 파라미터를 정할때 주의할점은

파라미터 뒤부터 채워져야 한다는것이다.

이유는 해당 함수를 쓸때 우리가 파라미터를 앞에서 부터 채워넣기때문이다.






3. static 변수


static 변수는 한 함수에서 계속해서 사용되는 변수를 의미한다 (정확한 의미는 아니다)


예를 보면 이해하기 쉽다.





local count 와 static count 둘다 처음에는 0으로 초기화하고 +1 을 수행하였다.

local count 는 함수가 수행될때마다 새로 생기고 초기화 되고 없어지지만

static 변수는 한번 초기화되면 그다음에 초기화 과정을 생략하고 없어지지 않는다.





실습

1. 기존의 가위바위보 게임에서 컴퓨터가
가위/바위/보 중에서 랜덤으로 내도록 만들고
함수를 헤더와 cpp에 정의하라

728x90