본문 바로가기
반응형

전체 글123

[C++] 예제로 배우는 객체 지향(Prototype Pattern) Copy & Paste 기능 추가하기 타입코드를 사용하는 방법 새로운 도형이 추가되면 기존 코드가 수정(추가)된다. OCP를 만족하지 못한다. 가상함수를 사용하는 방법 새로운 도형이 추가 되어도 기존 코드가 수정되지 않는다. OCP를 만족한다. "Prototype"이라 불리는 디자인 패턴 // Exmaples.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다. // #include #include using namespace std; class Shape { public: int type; virtual void Draw() { cout 가상함수를 사용하는 방법 /*switch (v[k]->type) { case 1: case 2: case 3: break.. 2020. 11. 25.
[C++] 예제로 배우는 객체 지향 #1 도형 그리기 모든 도형을 타입으로 설계한다. -> Rect, Circle 모든 도형의 공통의 기반 클래스가 있다면 모든 도형을 하나의 컨테이너에 담아서 관리 할 수 있다. ->기반 클래스 Shape 추가 모든 도형의 공통 특징은 반드시 기반 클래스에도 있어야 한다. -> Draw함수는 Shape에도 있어야 한다. 파생 클래스에서 재정의된 함수는 반드시 가상 함수로 만든다. #include #include using namespace std; class Shape { public: virtual void Draw() { cout 2020. 11. 24.
[C++] Protected Contructor 생성자가 호출되는 정확한 순서 자식 클래스의 생성자 -> 부모클래스의 생성자 생성자를 protected에 만드는 경우 자기자신은 객체로 만들 수 없지만 파생 클래스의 객체는 만들 수 있다. "동물"은 추상적 개념이기 때문에 객체가 존재 할 수 없지만, "강아지"는 큰 현실세계에서 객체가 존재한다. Protected 소멸자의 의미 Public 소멸자를 호출할 수 없으므로 Stack에 객체를 만들 수 없고 Heap에 할당할 수 있다. 그러므로 소멸자도 destroy()와 같은 별도의 public 함수로 만들어 줘야한다. 참조 개수 기반의 객체 수명을 관리하는 기법에서 많이 사용된다. 2020. 11. 24.
[C++]Casting, Virtual function #include using namespace std; class Animal { int age; public: void Cry() { cout 2020. 11. 24.
반응형