새로 쓰게 된 이유 전에 쓴 글을 보고 나중에 저 글을 보면서 구현하라고 하면 과연 똑같이 할 수 있을까? 란 생각과 그 방식으로 구현하게되면 추후에 더 많은 기능들을 구현했을때 다른 오브젝트들과 상호작용에 있어서 제대로 돌아갈 수 있을까? 란 생각이 많이 들었다. 프로젝트 코드이기도 했고, 내가 생각했던 인벤토리 형식이 아니였어서 이번엔 완전히 RPG게임의 인벤토리와 같은 기능을 구현해보았고, 나중에도 보고 따라 만들 수 있도록 상세하게 쓰고싶었다. 나는 로스트아크의 인벤토리를 참고해서 얼추 만들어보았다. 우선 내가 생각한 인벤토리이다. Panel이 총 3개(원정대, 개인, 소지품)으로 있고, 개인창고와 소지품은 또다시 2개의 Panel이 들어간다. 첫번째로는 위에 소지품 텍스트가 들어가있는 Panel..
목차 템플릿과 제네릭 프로그래밍 설명 코드 및 설명(with Chat GPT4) 1. 템플릿(Template)이란? 템플릿은 코드의 재사용성을 높이기 위해 설계된 기능으로 템플릿을 사용하면, 데이터 타입에 의존하지 않는 범용적인 클래스나 함수를 작성할 수 있습니다. 템플릿 종류 함수 템플릿(Function Templates) 동일한 로직을 다른 데이터 타입에 대해 수행하는 함수를 만들 때 사용하는 템플릿으로, 함수를 정의할 때 특정 타입을 지정하지 않고, 템플릿 매개변수를 사용하여 타입을 나중에 정하는 방식인 템플릿입니다. 클래스 템플릿(Class Temlates) 데이터 타입에 독립적인 클래스를 정의할 때 사용합니다. 이를 통해 다양한 타입에 대해 동작하는 범용적인 클래스를 만들 수 있습니다. 제네릭 ..
상속이란? 기존 정의되어 있는 객체의 속성과 메소드를 물려받아 새로운 클래스로 재정의하는 것 입니다. 현실에서 상속은 말그대로 부모로부터 자식이 물려받는 것을 말합니다. 이는 객체지향에서도 적용되며, 부모클래스의 속성과 메소드를 자식클래스가 물려받을 수 있습니다. 다형성이란? 상속받은 메소드를 재구현하여 같은 이름의 함수를 다양하게 호출할 수 있는 것 입니다. 부모 클래스의 메소드를 자식클래스에서 이름은 바꾸지않고 내용만 바꾸어 호출시키며 사용할 수 있습니다. 상속은 클래스 선언시에 " : (접근지정자) 부모클래스이름" 방식으로 작성해주면 됩니다. 사람클래스와 학생클래스를 상속으로 부모 자식관계로 만들어 main함수에서 호출시켜보겠습니다. person클래스 #pragma once #include usin..
목차 생성자와 소멸자란 생성자 정의와 소멸자 정의 with 코드 "생성자"란 객체를 생성할때 객체의 속성값들을 초기화 시켜주는 함수 입니다. 풀어서 얘기해보면 객체를 생성할때에 하나의 메소드를 통해 객체를 초기화 시켜 한번에 생성하기 위함입니다. 생성자는 정의해주지 않으면 컴파일러가 자동으로 디폴트 매개변수를 가진 생성자를 자동으로 정의해줍니다. "소멸자"란 객체가 소멸될 때 자동으로 발생하는 발생하는 메소드 입니다. -객체의 수명이 끝나면 실행되는 메소드로서 쓰지 않을 객체를 정리해줍니다. -객체의 동적할당을 해제하기 위해 사용합니다. (메모리 누수를 막기 위함) 소멸자는 생성자와 메소드 정의는 비슷하며 ~를 붙여서 정의합니다. 생성자와 소멸자의 정의 #include #include using name..
목차 접근지정자란? 접근 지정자 종류들 접근지정자 사용해보기 with 코드 1. 접근 지정자란? 객체지향에는 캡슐화라는 단어가 존재합니다. 속성과 메소드들을 묶어서 캡슐에 가둔다는 것인데, 이때 이 캡슐을 얼마나 보여줄지를 나타내는 것이 접근지정자입니다. 객체지향은 캡슐화가 굉장히 중요한 요소입니다. 2. 접근 지정자 종류들 public : 모든 접근을 허용한다. private : 자기 클래스 내부의 메서드에서만 접근 허용 protected : 자기 클래스 내부 또는 상속받은 자식 클래스에서 접근 허용 public은 말그대로 클래스내의 속성과 메소드를 외부에서의 접근을 허용하겠다는 지정자입니다. private는 자기 클래스내에서 메소드로의 접근만을 허용하겠다는 지정자입니다. protectied: 자기 클..
목차 프로그래밍 언어에서 객체란 객체 선언과 사용과정 with 코드 1. 객체란? 프로그래밍 언어에서 객체 또는 오브젝트는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미합니다. 그 메모리에는 여러 변수, 자료구조, 함수 등이 들어 갈 수 있으며, 객체는 선언 전까지(메모리 할당전까지) 존재하지 않습니다. 라고 위키백과에서 말해주고 있습니다. 저는 이런 설명보다는 처음 프로그래밍을 배우는 시점에서의 설명을 원하시는 분들을 위해 풀어서 설명해보겠습니다. 지금까지 작성한 코드들은 그저 변수와 함수로 코드로 티키타카하며 써왔습니다. 하지만 이제는 현실과 비슷한 시점으로 프로그래밍을 하게 됩니다. 객체: 말그대로 작용의 ..
목차 포인터 개념 포인터를 사용하는 이유 with 코드 1. 포인터란? 포인터는 다른 변수, 또는 그 변수의 메모리 공간주소를 가리키는 변수입니다. 프로그래밍 언어를 공부하실때 처음으로 큰 벽을 느끼게 되는 구간입니다. 필자인 저도 처음 코딩을 배울때 포인터에서 벽을느껴 잠시 도피를 해왔었기에 얼마나 큰 벽인지 알고있습니다. 다른 변수의 메모리 공간 주소를 가리키는 변수라고 설명했는데 먼저 자료형의 메모리공간부터 알아보겠습니다. 이해를 돕기위해 순서대로 설명드리겠습니다. 1. 코딩을 하기위해 비주얼 스튜디오나 다른 툴을 켰을때에 아무 글자없는 밑 그림과 같은 도화지같은 화면을 보셨을겁니다. 저희는 상상으로 2차원평면의 우주같은 공간이라고 생각합시다. 2. 저희가 코딩을 하게되면 밑에 코드와 같이 변수를 ..
이번엔 목차없이 단순 함수설명과 코드로 작성하겠습니다. 함수란? 함수는 일부 작업을 수행하는 코드 블록입니다. 함수는 호출자가 함수에 인수를 전달할 수 있도록 하는 입력 매개 변수를 필요에 따라 정의할 수 있으며, 출력으로 값을 변환 할 수 있습니다. 라고 Microsoft Learn 사이트에서 설명하고 있습니다. 하지만 처음 코딩을 배우시는 분들을 위해 좀 더 쉽게 설명을 해보겠습니다. 여태 작성한 기초 시리즈 글들을 보면 모두 " int main(void){ 코드; 코드;코드; return 0;} " 하여 실행해왔습니다. 저희는 Main이라는 함수에서 코드를 실행해왔던 것 입니다. Main은 말그대로 프로그램을 실행하는데 있어서 "Main"(메인)이 되는 함수라고 생각하시면 됩니다. Main은 프로그..
목차 조건문이란 if문과 else / else if문 사용 switch case문 사용 1. 조건문이란 조건문은 어떤 조건이 주어질 때 어떤 동작을 수행하도록 하는 것으로, 주어진 조건의 만족여부에 따라 선택적으로 실행하고자 할 때 사용되는 문장입니다. 만족 여부를 bool 자료형으로 리턴하며, bool값에 따라 달라지는 계산이나 상황을 수행하는 프로그래밍 언어의 특징입니다. by 위키백과 2. 조건문(if, else, else if)사용 코드로 먼저 보겠습니다. #include int main(void){ int num = 1; if (num < 2) { std::cout