본문 바로가기

분류 전체보기612

C++ 복사생성자 & 팩토리패턴 오늘은 C++의 아이템구매와 인벤토리의 생성에 대한 수업이 진행 되었다. 아이템을 구매하고 구매한 아이템을 인벤토리에 복사하는 과정이 있었다. 같은 클래스의 객체로부터 정보를 복사하여 새로운 객체를 생성하는 복사 생성자에 대하여 조사해본다. 우선 코드를 가지고 예를 들어 보도록 하자. ●일반 생성자 & 복사 생성자 #include using namespace std; class Sample { private: int num1; int num2; public: Sample(int a, int b); // 일반 생성자 선언 Sample(const Sample& Sp); // 복사 생성자 선언 }; Sample::Sample(int a, int b) // 일반 생성자 구현 { cout 2022. 11. 28.
C++ 상점.인벤토리(추상화,가상함수 사용하기) Item.h #pragma once class Item { public: string name; int price; string info; public: Item(); virtual ~Item(); //가상소멸자 Item(string _name,int _price, string _info); virtual void Print(); //가상함수 Print() }; class Weapon : public Item //상속 { public: int att; Weapon(); ~Weapon(); Weapon(string _name, int _price, int _att, string _info); void Print() override; }; class Armor : public Item //상속 { publi.. 2022. 11. 27.
C++ 가상함수 & 재정의 지난번 클래스 구조의 생성자 & 소멸자에 대하여 공부 하였다. 이번에는 가상함구 & 재정의 에 대하여 조사를 진행한다. ● 가상 함수 ( Virtual Function ) 우선 가상 함수 ( Virtual Function ) 이란 무엇인지 알아보도록 하겠다. 이름만 보았을때 Virtual 이라는 것이 제일 먼저 눈에 띈다. VR 게임이 제일 먼저 떠오르기는 했으나 함수?와 어떤 연관이 있는지는 잘 떠오르지 않았다. 가상 함수란 ? C++ 에서 가상함수는 부모 클래스(class)에서 상속받을 클래스에서 재정의할 것으로 기대하고 정의해놓은 함수 라고한다. virtual 이라는 예약어를 함수 앞에 붙여서 생성할 수 있으며 생성된 가상함수는 파생 클래스(class)에서 재정의하면 이전에 정의 되어있던 내용들이 .. 2022. 11. 24.
C++ 코드작동 확인하는 참고 사이트 코드를작성하고 코드가 어느 저장공간에 저장되는지 코드의 작동 진행 순서가 어떻게되는지 육안으로 확인해볼수있는 사이트 이다. 모르는 코드들은 작동이 어떻게 되는지 한번씩확인해보기위해서 참조하였다. https://pythontutor.com/render.html#mode=display Python Tutor code visualizer: Visualize code in Python, JavaScript, C, C++, and Java Please wait ... your code is running (up to 10 seconds) Write code in Python 3.6 Java 8 JavaScript ES6 C (gcc 9.3, C17 + GNU extensions) C++ (g++ 9.3, C++2.. 2022. 11. 24.
C++ 생성자 & 소멸자 지난번 과제로 static 에 관하여 알아보고 공부하였다. 이번에는 C++의 생성자와 소멸자에 관하여 조사 하게 되었다. 아직 모르는 부분이기때문에 두가지의 분류를 나누어 조사 해보도록 한다. ● 생성자 ( Constructor :: 영문 사전 의미 - 제작자 ) 생성자는 해당클래스의 객체가 인스턴스화될 때 자동으로 호출되는 특수한 종류의 멤버 함수다. 일반적으로 클래스의 멤버 변수를 적절한 기본값 또는 사용자 제공 값으로 초기화 하거나 클래스를 사용하는 데 필요한 설명 (ex. 파일 열기.etc)이 필요한 경우 사용된다. 일반적인 멤버 함수와 다르게 생성자 정의 방법에는 특정 규칙이 있다. 생성자 이름은 클래스와 이름이 같아야 한다. 생성자는 리턴 타입이 없다. (리턴이 없다고하여 void와 같다는 의.. 2022. 11. 23.
수업 32일차 - static static 정적 변수 전역변수처럼 데이터영역에 저장이된다 그렇기떄문에 전역변수처럼 사용이 가능하다. (초기화는 생성시 한번만 이루어지며 데이터영역에 저장 된다) 장점 : 사용이 편리하며 메모리누수가 없다. 단점 : 데이터영역에 지속적으로 공간을 차지하고있기때문에 프로그램작동 내내 용량을 차지하고있다. 참고할 게임 예시. 게임내에서 맵1과 맵2가 있다 가정하면 각각의 맵에 왔다갔다 할수있는데 각각의 맵에는 수많은 객체들이 존재한다. (ex 플레이어 몬스터 npc 아이템 ect .... ) 이경우 2개의 맵을 항상 가지고있으면 매우 무겁기 때문에 맵1에 유저가있을경우 맵2는삭제상태이며 맵2로이동시 맵1을 삭제시켜 가볍게 유지한다 이때문제점이있는데 맵1에서 유저가 다양한아이템을 구매해두면 맵2로이동시 맵1이.. 2022. 11. 23.