본문 바로가기
반응형

프로그래밍 이야기/C++ 기초26

함수 오브젝트와 람다 표현식 Lambda Expression, 람다 표현식이란... 스코프 안에 있는 캡쳐 가능한 이름이 없는 Function Object를 만들어 주는 테크닉 다음과 같이 Muliplication 클래스가 있다. 멤버로서 localVar가 있고, 이는 생성자의 인자로서 초기화된다. localVar는 재정의된 연산자 ()에서 전달되는 인자 int x 와의 곱이 반환 된다. class Muliplication { public: explicit Muliplication(int a) : localVar{ a } {} int operator() (int x) const { return localVar * x; } private: int localVar; }; 이 클래스, 즉 함수 오브젝트는 이렇게 사용될 수 있다. int .. 2021. 9. 17.
[Design Pattern] Container Linked List와 같은 Container를 만들때 사용하는 전통적인 기법과 이에 대한 장점을 활용하고, 단점을 극복하는 방법에 대해 알아보자. Single Linked List의 예 #include using namespace std; struct Node { int data; Node* next; Node(int d, Node* n) : data(d), next(n) {} }; class slist { Node* head = 0; public: void push_front(int n) { head = new Node(n, head); } int front() { return head->data; } }; int main() { slist s; s.push_front(10); s.push_front.. 2021. 2. 5.
[Design Pattern] Observer (관찰자) Observer Pattern 엑셀 시트에서 어떤 표에 값을 입력하면 그래프에 값이 즉각 반영되어 그래프의 그림들이 변하는 것을 볼 수 있다. 이렇게 하나의 데이터가 변경 되었을때 이 데이터와 연결된 모든 객체들이 자동으로 업데이트되도록 하는 기법을 Observer pattern이라고 한다. 객체 사이의 1:N의 종속성을 정의하고 한 객체의 상태가 변하면 종속된 다른 객체에 통보가 가고 자동으로 수정이 일어 나게 한다. #include #include using namespace std; class Table { int data; public: void SetData(int d) { data = d; } }; class PieGraph { public: void Draw(int n) { cout vect.. 2021. 2. 4.
[Design Pattern] PIMPL (Pointer to Implementation) 엄밀히 Design Pattern은 아니지만 Bridge pattern과 비슷한 계층 개념인 PIMPL(Point to implementation)에 대해서 알아보자. PIMPL의 장점 1. 컴파일 속도를 향상시킨다. 2. 완벽한 정보 은닉이 가능하다. 헤더 파일을 감출 수 있다. 이러한 개념을 예제를 통해 알아보자. 다음은 Point 클래스와 이에 대한 구현의 간단한 예이다. // Point1.h class Point { int x, y; public: Point(int a = 0, int b = 0); void Print() const; }; // Point1.cpp #include #include "Point1.h" using namespace std; Point::Point(int a, int b.. 2021. 2. 3.
반응형