본문 바로가기

프로그래밍/C++

(37)
this this : 객체 자신을 가리키는 용도 객체자신의 주소 값을 의미한다. this 포인터는 그 주소 값과 자료형이 정해져 있지 않은 포인터이다. this->num=207; this는 객체를 참조하는 포인터다. 객체의 포인터로는 지역변수에 접근이 불가능하다 멤버변수만 접근이 가능하다 Self-Reference : 객체 자신을 참조할 수 있는 참조자이다
RTTI (Run Time Type Information) RTTI (Run Time Type Information) : 런타임 타입 정보, 객체의 런타임 정보를 얻을 수 있는 기능이다. 1. dynamic_cast : RTTI를 이용하여 객체 계층 간에 타입 변환을 안전하게 할 수 있도록 해준다. virtual이 없는 클래스에 하게 되면 컴파일러 오류가 발생한다. 2. typeid : 런타임에 객체의 타입이 무엇인지 알 수 있게 해준다. 객체가 다형성을 가지면 virtual가 하나라도 있어야 올바르게 작동한다.
4가지 캐스팅 1. const_cast : const 변수의 상수 속성을 없애고자 할 때 사용한다. 네 종류의 방법 중 상수 속성을 없애는 유일한 캐스팅 방법이다. ex) exturn void ExFunc(char* str); void f(const char* str) { ExFunc(const_cast(str); } 2. static_cast : 가장 일반적인 타입 변환을 수행한다. 예를 들어 int 변수를 이용해서 double 타입의 결과값을 계싼할 때 정수 나눗셈이 발생하지 않게 하려면 static_cast를 이용해서 int 변수를 double로 변환한다. ex) int i = 3; int j = 4; double result = static_cast(i) / j; 3. reinterpret_cast : 특별한 ..
map map 컨테이너 : 연관 컨테이너 중 자주 사용하는 컨테이너로 원소를 key와 value의 쌍으로 저장한다. set과 map의 차이 : set은 원소로 key 하나만을 저장하지만, map은 원소로 key와 value의 쌍을 저장한다. key는 중복으로 저장될 수 없으며 중복 key를 저장해야 한다면 multimap을 사용해야 한다. map의 원소는 pair 객체로 저장된다. pair 객체의 first 멤버 변수는 key, second 멤버 변수는 value이다. insert() 멤버 함수는 pair 객체를 인자로 받아 map의 원소인 key와 value의 쌍을 저장한다. #include #include using namespace std; int main() { map m; m.insert(pair(5,..
list list : 시퀀스 컨테이너이므로 원소의 저장 위치(순서)가 정해지며 노드 기반 컨테이너이므로 원소가 각각의 노드에 저장된다. 각 노드는 앞쪽, 뒤쪽 노드와 연결된 형태로 이중 연결 리스트이다. 컨테이너 앞쪽에 추가하는 push_front(), 제거하는 pop_front(), 뒤쪽에 추가하는 push_back(), 제거하는 pop_back()을 가진다. 첫 원소를 참조하는 front()와 마지막 원소를 참조하는 back()을 갖는다. 또 지정한 위치에 원소를 삽입하는 insert()와 제거하는 erase()를 갖는다. 노드 기반 컨테이너이므로 at()과 [] 연산자가 없으며 임의 접근 반복자가 아닌 양방향 반복자를 제공한다. #include #include using namespace std; int m..
vector 1부 vector는 시퀀스 컨테이너 이므로 원소의 저장 위치(순서)가 정해지며 배열 기반 컨테이너이므로 원소가 하나의 메모리 블록에 할당된다. 그림처럼 vector는 앞쪽이 막혀 있는 형태로 앞쪽에는 원소를 추가/제거할 수 없으며 뒤쪽에만 추가/제거할 수 있다. 차례차례 원소를 추가하는 push_back()과 제거하는 pop_back()을 가진다. 또 첫 원소를 참조하는 front()와 마지막 원소를 참조하는 back()을 가진다. #include #include using namespace std; int main() { vector v; v.push_back(10); v.push_back(20); v.push_back(30); v.push_back(40); v.push_back(50); for(size_t..
vector의 간략한 소개 vector : 임의 접근 반복자를 지원하는 배열 기반 컨테이너이다 원소가 하나의 메모리 블록에 연속하게 저장된다 메모리 할당 크기를 알 수 있게 capacity() 멤버 함수를 제공한다 한 번에 메모리를 할당하고 사용할 수 있는 reserve() 멤버 함수를 제공한다 원소가 연속하게 저장되므로 원소에 접근하는 at()이나 v[i] 등의 연산은 속도가 빠르지만 insert(), erase(), push_back() 등이 빈번하게 호출되야 하는 프로그램이면 다른 컨테이너의 선택을 고려해야 한다 시퀀스 기반 컨테이너이다. 원소가 서로 상대적인 순서를 유지하므로 가장 앞 요소와 가장 뒤 요소를 참조하는 front(), back() 멤버 함수를 제공하고, 컨테이너 끝에 추가하고 제거하는 push_back(), ..
STL 소개, 컨테이너, 반복자 STL은 Standard Template Library의 약자이다. 구성 요소 1. 컨테이너 (Container) : 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 한다. 2. 반복자 (Iterator) : 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 하는 기능을 한다. 3.. 알고리즘 (Algorithm) : 정렬, 삭제, 검색, 연산 등을 해걸하는 일반화된 방법을 제공하는 함수 템플릿이다. 4.. 함수 객체 (Function Object) : 함수처럼 동작하는 객체로 operator() 연산자를 오버로딩한 객체이다. 5.. 어댑터 (Adaptor) : 구성 요소의 인터페이스를 변경해 새로운 인터페이스를 갖는 구성요소로 변경한다. 6.. 할당기..