본문 바로가기

오블완13

C++ Singleton, Recursive, State - 24.11.27 Design Pattern - 생성, 구조, 행동 패턴그 중 생성 패턴 중에서 가장 활용되는 것이 바로 싱글턴이다. *Singleton - 클래스의 인스턴스를 오로지 하나만 생성해서 전역적으로 접근 가능하게 만드는 것이 핵심. - 단 하나의 인스턴스만을 가지게 되는 것을 보장해준다. - 클래스의 객체가 복사가 되면 안되고, 외부에서 객체가 생성되거나 소멸이 안되도록 막아줘야 한다. templateclass Singleton{ private : //상속받을 일이 없기에, 생성자,소멸자를 private에 두어 사용해도 된다. //외부에서 객체 생성, 삭제를 막아서 프로그래머의 실수를 줄일 수 있다. Singleton() { cout ⁕ Recurs.. 2024. 11. 27.
C++ static / extern, SOLID - 24.11.26 *static  - 가시성, 생명 주기를 제어할 때 사용. - 변수의 생명주기는 프로그램이 종료될 때까지 유지된다. - 그 생명 주기 안에서 static 변수는 단 한 번의 초기화만 가지고, 선언된 지역에서만 사용 가능하다. - 즉 A.cpp 파일에 선언된 static 함수는 다른 cpp 파일에서 접근할 수 없다. *extern- 다른 파일에 있는 정의된 변수를 참조할 수 있는 키워드.- 다른 파일에 public으로 정의된 전역 변수를 가져올 수 있다.- 단, 위에 말한 것 처럼 static 변수는 가져올 수 없다.  A.cppint global = 20;static int staticGlobal = 10;/********************************/B.cppextern int globa.. 2024. 11. 26.
C++ 클래스 전방선언(상호참조오류) 와 Linked List - 24.11.25 * 클래스 전방 선언어떠한 A 클래스와 B 클래스가 서로 include를 사용해 상호 참조를 하려고 할 때,상호 참조 오류가 발생한다. 이러한 오류를 해결하기 위해 사용되는 것이 클래스 전방선언이다. - 클래스의 이름과 함께 여기에 있다고 미리 컴파일러에게 선언만 하는 역할. - 서로 간의 참조할 일이 있다면 클래스 전방선언으로 빼주는 것이 좋다. - 전방 선언자를 사용할 경우, 그 클래스 관련 객체는 포인터로 선언해주어야 한다. - 컴파일 속도가 빨라질 수 있다. - 헤더 파일에 전방 선언을 하고, cpp 파일에는 include 해줄 수 있다. class Player;class weapon{ Player* player;}; class Weapon;class Player{ Weapon* weapon; .. 2024. 11. 25.
오버라이딩, 바인딩, 추상 클래스 - C++ 24.11.21 * 오버라이딩( overridding ) : 자식 클래스가 부모 클래스의 메서드를 재정의하여 자신의 방식으로 동작하게 만드는 객체지향의 프로그래밍 중 중요한 개념.   함수 이름과 매개변수가 부모 클래스의 함수와 동일해야 한다.  자식 클래스가 부모 클래스의 함수를 변경하거나 확장시킬 수 있다. * virtual ?  : 부모 클래스의 함수에 붙이며, 해당 함수가 오버라이딩 가능함을 나타낸다.   상속 받은 자식 클래스의 해당 함수도 virtual이 붙어 있지 않아도 가상 함수로 변환된다. class Vehicle{ protected: //자식 클래스 까지는 접근이 가능한 이름 변수 string name; public: Vehicle(const string& n) : .. 2024. 11. 22.
C++ 복사 생성자, 상속 - 24.11.20 복사 생성자  - 동일한 클래스의 객체를 복사하여 객체를 생성할 때, 사용하는 생성자. 1. 얕은 복사 : 객체를 복사할 때, 객체의 모든 멤버 변수를 단순히 복사한다.- 만약 멤버 변수가 포인터인 경우라면 포인터의 주소값만 복사. ㄴ 즉, 같은 메모리 영역을 가리키게 됨.(문제가 생길 수 있다.) ㄴ 만약 한 객체에서 해당 메모리를 수정하면 영향을 받는다. ㄴ 두 객체가 같은 메모리 주소를 가리키기 때문에 한 객체가 소멸되면서 메모리를 해제하게 되면      다른 객체는 더이상 유효하지 않은 메모리를 가리키게 되어 문제가 발생한다. class MyArray{ private: int* data; int size; public: MyArray(int size) :.. 2024. 11. 20.
C++ 클래스 - 24.11.19 *클래스- 객체 지향 프로그래밍- 우리가 살고 있는 실제 세계가 객체들로 구성되어 있는 것처럼 소프트웨어도 객체로 구성하는 방법.- 객체는 나름대로의 고유한 기능을 수행하면서 다른 객체들과 상호 작용을 한다. * 클래스의 기본 구조1.  클래스 정의 : class 키워드 사용2. 멤버 변수 : 클래스 내부에 정의된 변수로, 객체의 상태(속성)를 저장하게 된다.3. 멤버 함수 : 클래스 내부에 선언되고 구현, 객체의 동작을 정의한다. * 객체란 ?- 클래스는 객체를 정의하는 틀이나 설계도.- 객체는 설계도를 기반으로 실체화한다. ※ 접근 제어 지정자- private : 클래스 내부에서만 참조 가능 (멤버 변수 등)- public : 외부에서 자유롭게 참조가능- protected : 클래스 내부와 상속 관계.. 2024. 11. 19.
반응형