문법 STL Standard Template Library의 약자! C++에 미리 정의된 라이브러리 템플릿을 사용하는데 이건 Compile-Time polymorphism이다. 4가지 타입으로 Containers - 데이터를 저장하는 객체 Functions - 객체를 함수처럼 사용하게 하는 펑션 콜 "()" 을 오버로딩! Iterators - Containers안의 데이터[원소]를 포인팅!(가리키게 해주는 포인터) Algorithms - 널리 사용되는 함수들(정렬, 최대값, 최소값~ 등등) Q >STL의 종류 4가지를 서술하시오. Containers Sequence Containers Container Adapters Associative Containers 원소를 순차적으로 접근할 수 있다. 기능이 추..
Behavioral Design Patterns 특정 동작에 관련된 디자인 패턴이다. Chain of responsibility 요청을 받을 수 있는 종류가 한 가지가 아닐 경우에, A 요청 B 요청을 한 명이 다 처리하는 게 아니라 각각의 요청에 대해서 처리 담당이 있다면 쉬워질 것이다. 내가 처리할 수 있으면 처리하고, 처리할 수 없으면 다른 담당자에게 돌려주기. 그 담당자도 안 되면 그 다음 담당자에게 넘기기.(체인 구조) 온라인 쇼핑몰 사이트에서, 주문 전 구매자 정보를 검사할 필요가 있다. (고객의 정보가 다양할 뿐더러 그런 정보를 검사하려는데 검사를 한 번에 주어져서 한 번에 핸들링하려 하면 실수하게될 가능성이 있다.) 또한, 추가적인 정보의 종류가 늘어날 경우에는? 하나의 로직에서 검사하고 ..
Advanced Template and STL Template parameter 값에 디폴트 값을 주고 싶다! (주로 크기가 3인데 계속 인자로 3을 넣어주기 귀찮다!) Default template argument로 아무 인자도 안 주었을 때 default 값을 specialized 하게 된다. 주의할 점 : Type은 항상 일정하고, Size(정수를 담는 변수)만 변화할거야! 이럴 때 생기는 문제점. 인자를 넘기는 것을 생각할 때 인자의 위치를 가지고 생각하게 된다. 위치, 순서를 인식하여 파라미터와 인자가 매핑되는 것에서 오류가 생길 수 있다. 따라서, Default parameter는 뒤에 넣어지게 된다. Default parameter가 하나 있을 때, 그 인자 뒤로는 모두 Default인 것이..
Introduction to Template compile time : run time polymorphism 컴파일 타임과 런타임 폴리모피즘에 대하여 Generic Programming using template 템플릿을 이용하면 제네릭 프로그래밍을 사용할 수 있다. Function overloading 도 컴파일 타임 폴리모피즘이다. 두 함수를 정의한 상태에서 컴파일 타임 폴리모피즘으로 구체화되면 컴파일러가 해당 함수가 어떤 함수인지 Linking을 해준다. Resolution rule에 의해서 결정된다. 컴파일러에 의해서 결정. 템플릿도 마찬가지로 compile time polymorphism이다. 함수를 템플릿으로 정의했을 때, 타입 네임을 T로 사용할 수 있다. 재료들을 가지고 함수를 만들게 된..
STL: Standard Template Library 4가지로 분류가 된다. containers Functions Iterator Algorithms Sequence containers Container adapters Associative containers Sequence containers : Array 어레이는 길이가 고정되어 있다. C와는 다르게 자신의 길이를 알고 있다. C에서는 함수에 배열을 인자로 받게 될 때, 배열의 길이도 인자로 줬어야 했다. 하지만 C++은 그렇지 않다. 버퍼 오버플로우 : 배열 길이는 3인데 인덱스 3이나 4를 원할 때, 메모리 접근 오류 STL의 Array를 사용하면 안전하게 사용할 수 있다. Sequence containers : Vector 어레이는 길이가 고..
디자인 패턴이란? 디자인 패턴의 3가지 분류 싱글톤 이 객체가 딱 한 번만 생성하게 하고 싶을 때 하는 디자인 패턴. Ex) 게임을 총괄하는 매니저, 게임 보드라는 게 하나만 있으면 좋겠다 할 때, 항상 이미 만들어진 객체를 주고, 새롭게 만들지 않음. 이 클래스의 인스턴스가 하나만 만들어지도록 보장해야함. -> 클래스의 생성자를 private으로 만든다. 객체가 아무곳에서나 생성되게 하지 않는다. 그래도 아예 막아버리면 안 되고, 생성은 해야한다. 글로벌 액세스 포인트를 만들어서 객체 생성을 제어한다. Static 키워드를 이용한 멤버필드, 멤버펑션으로 생성자를 만든다. 생성자를 만들거나, 이미 있는 객체를 반환하거나 한다. java는 복사를 명시적으로 해야하지만, C++은 단순히 선언만 해도 복사가 ..
오늘까지가 중간고사 범위 fuction overriding 부모 클래스의 함수를 자식 클래스가 오버라이딩 한다. 스태틱 디스패치와 다이나믹 디스패치 스태틱이라는 것은 컴파일 타임이 시작 전인 것이다. 어떤 함수를 사용할 것인지 컴파일러가 정해준다. 컴파일러가 아는 것은 타입밖에 모른다. 스태틱 캐스트. 캐스트를 사용하면 우리가 원하는 클래스의 함수를 불러올 수 있도록 한다. Developer 타입을 확인하고 Developer 타입의 함수를 호출하게 된다. 다이나믹 캐스트를 이용하자. Employee를 따라가서 Developer를 찾고, 각각의 함수가 원하는 함수로 발동되게 된다. 실습 때 한 게 이것이다. 만약에 디벨로퍼 리서쳐 말고 다른 하나의 타입을 클래스를 추가하고, 그 타입도 임플로이를 상속받는 ..