본문 바로가기

STUDY/C++

(13)
[ STL ] 표준 시퀀스 컨테이너(vector, deque, list) 컨테이너는 같은 타입을 저장, 관리할 목적으로 만들어진 클래스입니다. 컨테이너는 2가지로 나뉩니다. -표준 시퀀스 컨테이너-표준 연관 컨테이너 시퀀스 컨테이너는 vector, deque, list 3가지가 있습니다. ->vector deque는 배열기반, list는 노드기반 컨테이너연관 컨테이너는 set, multiset, map, multimap 4가지가 있습니다. -> 전부다 노드기반 컨테이너 [ 시퀀스 컨테이너 ] 시퀀스 컨테이너는 차례차례 원소를 추가하고 제거하는 push_back()과 pop_back()을 가지며 첫 원소와 마지막 원소를 참조하는 front()와 back()을 가집니다. 또한, 지정한 위치에 원소를 삽입할 수 있는 insert()를 가집니다. > vector - vector는 앞..
상속과 동적,정적바인딩 * 다형성이란? 부모 Class의 포인터로 자식객체를 가리킬 수 있다는 점과, 이런 경우에도 가상함수를 통해서 알맞은 자식 class의 함수가 호출된다는 점이 다형성을 지원하는 C++의 기능이다. 즉, 객체간의 연결을 유연하게 해주는 원동력이 된다. * 동적바인딩과 정적 바인딩 (1) 바인딩(Binding)이란? 프로그램 소스에 쓰인 각종 내부요소,이름 식별자들에 대해 값 또는 속성을 확정한 과정. 함수 주소를 찾아가는 과정이다. (2) 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding): 바인딩 과정이 컴파일 시점에 이루어지느나, 실행 도중 이루어지느냐에 따라 나뉩니다. - 정적 바인딩 ? 바인딩 과정이 컴파일 시점에 이루어지는 바인딩. 소스상에 명시적으로 int a ..
Class내에서의 Static 정적(Static)멤버변수는 '객체(Class Instance)가 소유하지않는(범주에 속하지 않는) 멤버이다. class A{public:int x; } 일반적인 멤버변수는 객체(Class Instance)가 생성될 때마다 독립적으로 생성된다. 하지만 class A{public:static int x; } 위와 같이 멤버에 static을 붙여 정적변수로 생성하면 해당 클래스에 하나만 생성되고 모든 객체에서 공동으로 접근할 수 있다.마찬가지로 정적 함수도 클래스에 하나만 생성되며 공동으로 접근 가능하다. * 정적멤버들도 접근지정자(public, protected, private)를 붙일 수 있다. * 정적 변수는 Class당 1개만 생성되므로 클래스 내부에서 초기화가 불가능하고, 클래스 외부에서 전역변수처..
[ Const 2편 ] Class에서의 Const초기화 Q. 다음 코드는 2가지 면에서 오류가 난다. 그 이유는 ? class Point {private:int Number;const int const _Number; public:int MinusNumber(int _Numver) const{Number = _Numver;}}; void main(){Point NewTest = Point();NewTest.MinusNumber(20); } (1) 일단 Const가 붙은 함수는 함수 내에서 Class 내의 변수 수정이 불가하다. (2) Const변수는 초기화가 되어야 하는데 안 되어있다. 그렇다면 Const변수는 어떻게 초기화를 할 수 있을까? Point(int Num){_Number = Num;} 이렇게 생성자에 해주면 될 것 같지만, 메모리 구조상 생성자가..
[ Const 1편 ] 변수와 함수에서의 Const - Const란? 컴파일러 상수(*상수 : 정적인 data. 초기화를 한번밖에 못하는 data. 메모리 변경이 불가하다).변수를 상수화하여, 한번 할당된 상수로 할당된 메모리의 모든 비트를 변경하지 못한다. - Const의 장점? const키워드가 붙은 객체는 외부 변경을 불가능하게 한다. class 바깥에서는 전역 / namespace 유효범위의 상수를 정의하는데 씀. static 선언한 객체에도 const를 붙이는 것이 가능하다. 정적 / 비정적 data 멤버 모두를 상수로 선언할 수 있다. [ 변수에서의 Const ] int a = 10; int const *pnconst int* pn = &n; -> 포인터가 가리키는 대상(값)이 상수. pn(주소)은 변경 가능하다, *pn(값)은 변경이 불가하다..