const
→ 이 함수는 멤버 변수의 값을 수정하지 않는다알고리즘에 대한 비교 (알고리즘의 효율성에 대한 객관적인 기준)
Big-O 표기법 (notation)
증가율 최대: 지수형
증가율 최소: 로그형
✏️ Generic Data Type
- 연산은 정의되었지만, 데이터 요소의 실질적인 자료형은 정의되지 않은 데이터 타입
Template
을 통해 구현
✏️ template은 헤더 파일과 cpp파일을 하나의 파일에 구현해야 한다.
모든 변수는 메모리 주소를 가진다.
✏️ 배열(array)는 그 자체로 값이 메모리 주소인 포인터이기 때문에 주소 연산자를 사용하지 않는다.
크기가 8인 char형 배열 arr에 대해 (
char arr[8]
),
배열의 시작 주소(base address) == arr[0]의 주소 == arr의 값
바인딩 (Binding)
? 프로그램의 요소에 지정 가능한 속성을 지정하는 것
변수: 변수의 구체적인 속성(이름, 자료형, 데이터)을 할당하는 것
함수: 함수를 호출할 때 해당 함수가 위치한 메모리 주소로 연결해주는 것
메모리의 할당 (Allocation of memory)
? 변수에 메모리 공간을 바인딩하는 과정
데이터의 수명 (lifetime)
✏️ lifetime과 scope의 차이
- 수명/생애 (lifetime)
: 프로그램이 실행되는 동안 변수가 실제로 메모리에 할당되는 시간- 범위 (scope)
: 변수가 선언되고 사용될 수 있는 코드의 범위 (local, global)
✏️ 함수의 지역 변수 (local variable)은 자동 데이터로 런타임에 할당이 일어나며, 메모리의 스택 영역에 할당된다.
new
나 delete
연산자 등)를 통해 할당하고 해제한 데이터int* ptr;
char* q
✏️ 배열은 변수 값이 메모리 주소인 포인터지만, assign 연산은 불가능하다.
*
을 통해 포인터가 가리키고 있는 변수의 값을 알 수 있다.NULL
로 표시된다.NULL
인 포인터에 역참조하는 경우 에러가 발생한다.✏️ 메모리가 사용 가능하지 않는 경우, 널 포인터가 반환된다.
try
{
// 예외발생 예상지역
}
catch(처리할 예외의 종류 명시)
{
// 예외처리 코드의 삽입
}
throw (예외상황에 대한 정보를 담고 있 의미 있는 데이터)
즉, throw에 의해 던져진 '예외' 데이터는, '예외' 데이터를 감싸는 try 블록에 의해서 감지되고, 이어서 등장하는 catch 블록에 의해 처리된다.