Increment & Decrement Operator (++ & --) 증가/감소 연산자 (++ & --) - 말 그대로, 변수의 값을 1만큼 더하거나 빼는 연산자이다. - 변수의 앞 혹은 뒤에 붙이는 방식에 따라 Prefix(접두어)방식, Postfix(접미어)방식으로 나뉜다. - 접두어, 접미어 방식은 결과적인 측면에서 피연산자에 가져오는 효과(증가/감소)는 동일하지만 증감 연산을 적용하는 시점이 다르다. Prefix Version (접두어 방식) int num = 10; ++num; // Prefix Ver. --num; // Prefix Ver. - 접두어 방식의 증감연산은 변수의 값을 먼저 증가시킨 후, 증가된 값으로 표현식의 값에 반영되는 방식이다. Postfix Version (접미어 방식..
Expression 표현식 - 값과 연산자들을 적절히 조합하여 표현식을 만들 수 있다. - Assignment Expression(대입 표현식), Relational Expression(관계 표현식) 등으로 구분된다. - C++에서는 모든 표현식이 그 자체로 하나의 값을 가진다. Assignment Expression 대입 표현식 - 말 그대로, 변수에 값을 대입시키는 표현식이다. - C++은 좌변의 값을 대입 표현식의 값으로 정의한다. x = y = z = 0 - 위 표현식은 z에 0이 대입, y에 z가 대입, x에 y가 대입된다. - 이 표현식 자체의 값은 변수 x의 값, 즉 0이다. * Side Effect (부수 효과) x = 100 - 위 표현식에서 C++은 변수 x에 100을 대입하게 된다. ..
for Loop for 루프 - 각 루프 주기에 진입할 때마다 조건 검사 표현식이 평가된다는 점에서 Entry-Condition Loop (진입 조건 루프)에 해당된다. - 진입 조건 루프의 경우 실행하기 전에 조건을 먼저 검사하는데, 이는 문제가 생기는 것을 일부 예방하는 효과가 있다. - for은 키워드 뒤에 소괄호가 붙는다는 점에서 함수로 오인할 수 있다. 하지만 for은 C++의 Keyword(키워드)이며 컴파일러는 for을 함수라 여기지 않는다. 같은 이유에서 프로그래머는 "for"라는 함수를 생성시킬 수 없다. * 일반적인 C++ 작성 스타일 - for과 소괄호 사이에는 한 칸을 띄우고, 함수명과 소괄호 사이는 띄우지 않는다. (이는 문법이 아닌, 단지 C++코드 작성 스타일이다.) - 루프 ..
\(\texttt{array}\) Template Class 배열 템플릿 클래스 - Built-in Array Type (내재 배열형, 기본 배열형)과 마찬가지로, 고정된 크기와 고정 메모리 대입방식을 차용했으므로, 내재 배열이 지닌 것과 동일한 수준의 효율성을 가졌다. - C++11에서 처음 도입된 템플릿 클래스이다. - 사용하기 위해선 \(\texttt{}\) 헤더파일을 포함시켜야 한다. - \(\texttt{}\) 템플릿 클래스와 마찬가지로, \(\texttt{}\) 템플릿 클래스는 \(std\) namespace에 포함되어 있다. - 내재 배열형과 동일하게, 표준 배열 표기법을 사용할 수 있다. - 한 프로그램에서, 내재 배열형과 \(\texttt{array}\) 템플릿은 배열 요소들을 동일한 메..
\(\texttt{vector}\) Template Class 벡터 템플릿 클래스 - C++98에서 처음으로 고안된 STL로 제공하는 동적 배열을 관리할 때 사용하는 도구이다. - Homogeneous Container를 제공한다. - 내부적으로는 new, delete 연산자가 사용된다. - \(\texttt{}\) Header File에서 제공된다. (구 \(\texttt{vector.h}\)) - vector 식별자는 \(\texttt{std}\) namespace에 속해있다. - vector 객체는 값을 삽입하거나 더할 때 자동으로 크기를 조정하며, 크기를 재조정할 때에는 vector 패키지에 포함된 여러 방법들을 사용할 수 있다. - 내재 배열형과 동일하게, 표준 배열 표기법을 사용할 수 있다. ..
Dynamic Structure 동적 구조체 - 동적 배열과 마찬가지로, new 연산자를 이용하여 컴파일 시간이 아닌 실행 시간에 메모리를 대입받아서 생성한 구조체를 의미한다. - 동적 구조체 변수를 선언/반환하는 것은 C++의 기본 데이터형 (C++'s Built-in Type) 과 문법 구조가 일치한다. structureType* pointerName = new structureType; delete pointerName; - 동적 구조체인 이상, 멤버접근 연산자로 dot operator(.)가 아닌 arrow operator(->)를 이용해야 한다. - 혹은 *pointerName 자체가 구조체이므로 (*pointerName).member 의 방식도 가능하다. 이 경우에는 C++ 연산자 우선순위로 ..
Dynamic Array 동적 배열 - Dynamic Binding(동적 바인딩)* 방식으로 메모리를 할당받은 배열을 의미한다. - Static Binding을 통해 메모리를 할당받는, 일반적으로 선언된 배열보다 메모리 효율이 높다. - 실행시간 동안에 메모리를 할당받으므로 프로그램 실행효율은 정적 바인딩 방식보다 떨어진다. * Dynamic Binding (동적 바인딩) - 컴파일 시간이 아닌 실행시간 동안 메모리를 필요한만큼 할당할 수 있게하는 기법이다. - 반의어는 Static Binding (정적 바인딩)이다. Operator : new, delete (new, delete 연산자를 통한 동적 배열 생성) // 일반형 dataType* pointerName = new dataType[numElem..
Dynamic Allocating Memory 동적 메모리 할당 - 컴파일 시간이 아닌, 실행시간 동안에 메모리를 대입하는 방법 (정적 포인터 변수의 경우, 소스코드 상에서 주소를 할당(초기화)하는데 이와 같은 메모리는 컴파일 시간에 할당된다.) - OOP에서 중요한 테크닉 중 하나로 손꼽힌다. - 포인터가 메모리를 위한 대용 이름을 제공하는 기능이라면, 동적 메모리 할당은 실행시간 동안에 unnamed(이름없는) 메모리를 대입하는 기능이다. 이 경우에 포인터가 그 메모리에 접근할 수 있는 유일한 통로이다. C Style: malloc() & free() - C Style이라고 표기했지만 C++에서도 cstdlib 헤더파일을 포함시키면 사용할 수 있다. - 동적인 메모리 할당 후, 반드시 Memory L..