1. 리스트. 1. 특징. 1. 더블 링크드 리스트 기반. 2. 더미 노드를 통한 앞쪽에 미지의 공간. 3. 미지의 공간 덕분에, push_front 함수와 pop_front 함수의 사용이 가능. 2. 정렬. 1. 표준 시퀸스 컨테이너이므로 자동 정렬이 불가. 2. 노드 기반 컨테이너이므로 배열 기반의 퀵 정렬이 사용 불가. 3. 그래서, 퀵 정렬이 내부 함수로 구현. 3. reverse 함수. 4. splice 함수. 5. 기타. 1. Functional 라이브러리를 포함. 2. 인덱스 연산자 오버로딩x. 2. 맵. 1. 특징. 1. 키 값을 기준으로 정렬. 2. 레드 블랙 트리 기반. 2. 연산자 오버로딩. 1. 맵 컨테이너는 인덱스 연산자 오버로딩을 통해 배열 대입이 가능. map m_Map; m_..
1. STL. 1. 컨테이너. 1. 원소 구성 방식. 1. 표준 시퀀스 컨테이너. 1. 리스트. 2. 벡터. 3. 디큐. 2. 표준 연관 컨테이너. 1. 셋. 2. 맵. 3. 멀티 셋. 4. 멀티 맵. 2. 메모리 저장 방식. 1. 배열 기반 컨테이너. 1. 벡터. 2. 디큐. 2. 노드 기반 컨테이너. 1. 리스트. 2. 셋. 3. 맵. 4. 멀티 셋. 5. 멀티 맵. 3. 컨테이너 어댑터. 1. 스택. 2. 큐. 3. 우선순위 큐. 4. 근사 컨테이너. 1. 스트링. 2. 반복자. 1. 종류. 1. 입력 반복자. 2. 출력 반복자. 3. 단방향 반복자. 4. 양방향 반복자(노드 기반 컨테이너). 5. 임의 접근 반복자(배열 기반 컨테이너). 3. 알고리즘. 4. 기타. 1. 효츌성. 2. 재사용성. ..
1. 연산자 오버로딩. 1. 사용자 정의 자료형의 연산을 위해 선언 및 정의. 2. operator 키워드. 3. friend 키워드. 1. 접근 제어 지시자를 무시하는 용도. 2. 전역으로 정의된 연산자 오버로딩 함수를 사용하기 위한 특수한 용도. 4. 기타. 1. 기존 연산자들의 인터페이스를 유지. 2. 임시 객체. 3. 연산자. 1. 인덱스 연산자. 2. 멤버 접근 연산자. class CObj { public: CObj(int _nA = 0, int _nB = 0); ~CObj(void); //CObj operator+(const CObj& rhs); CObj& operator+(const CObj& rhs); void operator+=(const CObj& rhs); CObj& operator+..
1. C++. 1. 객체 지향 프로그램의 특성. 1. 추상화와 인터페이스. 2. 은닉화. 3. 캡슐화. 4. 상속성. 5. 다형성. 2. 클래스의 4대 구성. 1. 은닉화. 2. 캡슐화. 3. 상속성. 4. 다형성. 3. 객체. 1. 수치와 기능으로 구성되어 사물을 표현. 2. 구조체나 클래스. 2. 클래스. 1. 안정성과 확장성 강화. 2. 클래스와 구조체의 차이점. 1. 클래스는 디폴트 접근 제어 지시자가 private. 2. 구조체는 디폴트 접근 제어 지시자가 public. 3. explicit 키워드. 1. 묵시적 형 변환. class CObj { public: CObj(void); CObj(int _nA) : m_nA(_nA); private: int m_nA; }; int _tmain(int ..
1. 가상 함수. 1. 가상 함수의 원리. 1. 가상 함수가 포함되면, 가상 테이블과 가상 포인터를 생성. 2. 가상 테이블. 1. vtbl. 2. 최소 4바이트. 3. 가상 포인터. 1. vptr 2. 4바이트. 4. 멤버의 호출 방식이 다름. 1. 일반적으로 this포인터를 이용하여 멤버에 접근. 2. 가상 테이블이 갖고 있는 주소 값을 이용하여 멤버에 접근. 2. 가상 소멸자. 1. 가상 함수가 하나라도 존재하면, 가상 소멸자를 생성. class A { public: A(void); ~A(void); public: virtual void Func(void); }; A::A(void) { cout
1. 상속. 2. 다형성. 1. 가상 함수. 1. virtual키워드. 1. 겉으로 보기엔 생략되지만, 자식 클래스에도 상속. 2. 순수 가상 함수. 3. 비순수 가상 함수. 2. 주소 값이 기준. 3. 추상 클래스. 1. 멤버 함수로 순수 가상 함수를 가진 클래스. 2. 추상 클래스는 인스턴스(객체) 생성 불가. 3. 추상 클래스의 자식 클래스에서는 순수 가상 함수를 반드시 정의. 4. 추상 클래스와 인터페이스 클래스의 차이점. 1. 추상 클래스는 순수 가상 함수를 하나 이상으로 구성. 2. 인터페이스 클래스는 순수 가상 함수와 상수로만 구성. 4. 바인딩. 1. 정적 바인딩. 1. 좌측의 타입이 기준. 2. 동적 바인딩. 2. 우측의 타입이 기준. 5. 캐스팅. 1. 업 캐스팅. 2. 다운 캐스팅.
1. 상속. 1. 접근 제어 지시자. 2. 관계. 3. 호출 순서. 1. 생성. 1. 메모리 할당. 2. 부모 생성자 호출. 3. 자식 생성자 호출. 2. 해제. 1. 자식 소멸자 호출. 2. 부모 소멸자 호출. 3. 메모리 해제. 4. 다중 상속. 1. 객체간 관계가 모호. 2. 이론적으로 사용. 5. 기타. 1. 구조체와 클래스 사이에 상속이 가능. 2. 부모 클래스의 헤더 파일을 자식 클래스에 포함. 3. 전방 선언 불가. 4. 부모 생성자가 자식 생성자 전에 호출. 5. 포인터 타입을 기준. 2. 다형성. 1. 가상 함수를 통해 생성자 기준으로 전환. 3. 기타. 1. UML. 1. 부모
1. 복사 생성자. 1. 복사 생성자 호출 조건. class CObj { public: CObj(char* _szName); CObj(const CObj& rhs); ~CObj(void); public: void Render(CObj _Obj) const; CObj GetClass(void); private: int m_nA; int m_nB; char* m_szName; }; CObj::CObj(char* _szName) : m_nA(0), m_nB(0) { m_szName = new char[strlen(_szName) + 1]; strcpy_s(m_szName, strlen(_szName) + 1, _szName); } CObj::CObj(const CObj& rhs) { m_szName = new..