Default Argument 디폴트 매개변수 - 함수호출에서 Argument(실제 매개변수)를 생략했을 경우에 실제 매개변수 대신 사용되는 값이다. (물론, 실제 매개변수로 특정 값이 입력되면, 그 값으로 처리된다.) - 디폴트 값은 Function Prototype(함수 원형) 부분에서 설정 가능하며, Function Definition(함수 정의) 부분은 일반적인 경우와 동일하게 작성하면 된다. - 컴파일러는 함수 원형을 조사하고 해당 함수의 매개변수 개수를 알아내는데, 이 때 프로그래머는 디폴트 매개변수의 존재 유무를 알려주는 방식이다. - 특히 클래스 설계시에, 디폴트 매개변수를 설정할 수 있는 상황이라면, 생성자, 메서드, 메서드 오버로딩의 개수를 많이 줄여줄 수 있다. * 가능한 범위내에서,..
Temporary Variable 임시 변수 - 실제 매개변수와 참조 매개변수간에 데이터형이 일치하지 않을 경우 생성되는 변수이다. - \(\texttt{const}\) 참조 데이터형의 매개변수일 경우에만 한정하여 임시 변수를 생성한다. - 임시 변수는 함수가 호출되어 있는 동안에만 유지되며 그 후에는 컴파일러가 마음대로 제거할 수 있게된다. * 컴파일러는 참조 매개변수가 \(\texttt{const}\)형 일 경우, 아래 두 가지 상황에서 임시변수를 생성한다. 1. Argument(실제 매개변수)가 올바른 데이터형이지만 L-Value가 아닌 경우 2. Argument(실제 매개변수)가 잘못된 데이터형이지만 올바른 데이터형으로 변환 가능한 경우 (어느정도 같은 범주안에 있는 데이터) 따라서, \(\tex..
Reference 참조 - 미리 정의된 어떤 변수의 실제 이름 대신 쓸 수 있는 대용 이름을 제공하는 기능이다. (포인터와 비슷한 면모가 있다.) - 참조의 주된 용도로는 함수의 Parameter(형식 매개변수)에 사용하는 것이다. - 매개변수로써 참조 변수를 이용하면, 해당 함수는 매개변수의 복사본이 아닌 원본을 갖고 작업하게 된다. (이러한 점에서는 포인터 개념과 동일하다.) - 또한, 참조 개념은 \(\texttt{class}\)를 설계할 때 필수적으로 사용되며, 일반적으로 C++에서는 클래스 객체를 함수에 전달할 때 참조로 전달한다. - 참조 변수와 원본 변수는 모두 같은 값과 같은 메모리 위치를 공유한다. - 참조 변수는 데이터형 바로 뒤에 \(\texttt{&}\) 연산자를 이용해서 선언한다...
Inline Function 인라인 함수 - 프로그램의 실행 속도를 높이기 위해 C++에서 새롭게 추가된 개념이다. - C의 Macro에 대응되는 개념이다. - 짧은 길이의 함수를 인라인 함수로 정의하면, 컴파일러는 적절히 판단하여(인라인으로 선언되어있다 하더라도 무조건 인라인 함수로 작용하지는 않는다!) 컴파일 시에 해당 함수가 호출되는 부분에 함수 호출을 발생시키는 것이 아닌, 해당 호출 구문은 함수 구현부분으로 대체해서 함수 몸체를 통째로 코드에 심어버리는 것과 같은 동작을 한다. (짧은 코드의 함수의 경우에는 함수 내용을 실행하는 시간보다 함수를 호출하는데에 더 큰 시간이 소요되기 때문이다.) - 위와 같은 이유로, 실행 시간 측면에서는 효율적일 수 있으나 메모리 공간 측면에서는 불리할 수 있다...
Recursion 재귀호출 - 함수가 자기 자신을 호출하는 기능이다. - C와 달리, C++에서는 \(\texttt{main()}\) 함수의 재귀호출은 허용하지 않는다. - 반복되는 연쇄 호출을 끝내기 위해 일반적으로는 \(\texttt{if}\) 구문을 재귀 호출의 일부로 만든다. - 하나의 작업을 서로 비슷한 두 개의 작은 작업으로 반복적으로 분할해가면서 처리해아 하는 상황에 적합하다. (특히, 이런 상황에서의 재귀적 접근법을 "Divide & Conquer" 전략이라고 부른다.) (재귀호출의 횟수가 계속해서 2배씩 증가하기 때문에 재귀 호출의 단계가 많이 요구되는 경우엔 오히려 비효율적일 수 있다.) Ex. 재귀함수의 일반적인 형태 returnType Func (arguments) { Stateme..
Function 함수 - C++에서의 프로그래밍 Module(모듈)이라 할 수 있다. - 컴파일러가 제공하는 Library Function(라이브러리)과 프로그래머가 직접 정의하는 User-defined Function(사용자 정의 함수)로 구분지을 수 있다. User-defined Function (사용자 정의 함수) - 프로그래머가 직접 정의한 함수이다. - Function Definition(함수 정의), Function Prototype(함수 원형), Call the Function(함수 호출)과 같은 전 과정을 프로그래머가 직접 구현해야 한다. Parameter (매개변수) - 호출한 함수와 호출된 함수 사이를 오가는 데이터이다. * Formal Parameter (형식 매개변수) : 전달되는 ..
File Input 파일 입력 - C++ 코드상에서 키보드를 통한 입력이 아닌, 파일을 통한 데이터의 입력 방법을 의미한다. * Console I/O(콘솔 I/O) : 키보드 입력 + 디스플레이 출력 환경을 의미한다. C++에서 파일입력시의 기본 원칙 - \(\texttt{}\) 헤더파일을 포함시켜야 한다. (\(\texttt{}\) 헤더파일에는 입력을 처리하는 \(\texttt{ifstream}\) 클래스가 정의되어 있다.) - 하나 이상의 \(\texttt{ifstream}\) 변수 또는 객체를 선언해야 한다. (일반적인 명명 규칙 범위 내에서 프로그래머가 원하는 이름으로 지정할 수 있다.) - \(\texttt{std}\) namespace 를 지정해야 한다. - 선언한 \(\texttt{ifstr..
File Output 파일 출력 - C++ 코드상에서 디스플레이를 통한 출력이 아닌, 파일을 통한 데이터의 출력 방법을 의미한다. * Console I/O(콘솔 I/O) : 키보드 입력 + 디스플레이 출력 환경을 의미한다. C++에서 파일출력시의 기본 원칙 - \(\texttt{}\) 헤더파일을 포함시켜야 한다. (\(\texttt{}\) 헤더파일에는 출력을 처리하는 \(\texttt{ofstream}\) 클래스가 정의되어있다.) - 하나 이상의 \(\texttt{ofstream}\) 변수 또는 객체를 선언해야 한다. (일반적인 명명 규칙 범위 내에서 프로그래머가 원하는 이름으로 지정할 수 있다.) - \(\texttt{std}\) namespace 를 지정해야 한다. - 선언한 \(\texttt{ofs..