목록분류 전체보기 (96)
강께르의 개발일지
1. 연산자 오버로딩이란? - 오버로딩은 함수의 이름은 같지만 매개변수의 자료형과 갯수에 따라 몸체를 다르게 정의하는 것을 의미한다. - 그럼 연산자 오버로딩은 무엇일까? 연산자가 숫자 계산으로 사용하던 기본적인 기능 말고 오버로딩하여서 다른 자료형 매개변수에 따라 다른 몸체를 정의하는 것이라고 이야기할 수 있겠다. class Point { private: int xPos; int yPos; public: Point(int x = 0, int y = 0) : xPos(x), yPos(y) { } Point operator+(const Point& ref) { Point pos(xPos + ref.xPos, yPos + ref.yPos); return pos; } }; Point pos1(3, 4); Po..
- C++은 다중 상속을 지원하는 언어이지만, 다중 상속이 논란이 많은 문법이므로, 가급적 사용하지 말아야 한다고 말한다. - 하지만 라이브러리에 다중 상속을 적용한 예가 있기에 이를 이해하기 위해서 공부할 필요가 있다. 1. 다중 상속 - 다중 상속이란, 둘 이상의 클래스를 동시에 상속하는 것을 말한다. class BaseOne { public: void FuncOne() { cout
1. 이것은 무엇인가? - 이 게임은 무엇인가? 월남뽕? 잘못들은 줄 알았다. 이는 카드 게임의 일종이며, 그 룰에 대한 설명은 아래 링크를 대신해 게임에 대한 설명은 줄이도록 하겠다. https://namu.wiki/w/%EC%9B%94%EB%82%A8%EB%BD%95 2. 요구사항 - 이 게임의 카드는 트럼프 카드로 알려진 그 카드로 사용한다. 총 52장이며, 게임 시작할 때, 무작위로 순서를 잘 섞을 것이다. - 이 게임은 매 판마다 플레이어에게 판돈을 걸 것인지, 접을 것인지 입력을 받을 것이다. 그 선택에 따라 판돈을 입력하거나, 이를 생략할 수 있다. 생략했을 시, 판돈은 0으로 고정된다. - 판돈의 최소 금액은 1000원이다. - 52장의 카드로 이루어진 카드 뭉치에서 3장을 뽑을 것이다. ..
1. 객체 포인터 변수 - 클래스를 기반으로 포인터 변수를 선언할 수 있다. 이는 객체의 주소 값을 저장하는 포인터 변수로, 객체 포인터 변수라고 부른다. - 만약 Parent 클래스가 있고, 그것의 자식 클래스인 Child 클래스와 그의 자식 클래스인 GrandChild 클래스가 있다고 하자. Parent* ptr; ptr = new Parent(); // 이런 객체 포인터가 가능하다. ptr = new Child(); // 자식 클래스를 가리키는 것도 가능하다. ptr = new GrandChild(); // 이보다 더 자식 클래스를 가리키는 것도 가능하다! - Parent 객체의 포인터 변수로 선언했는데 대입되는 주소값은 그의 자식과 또 그것의 자식 클래스가 가능하다! - 객체 포인터 변수는 다음과..
1. 상속을 쓰는 이유 - 이는 열혈 C++ 프로그래밍 책의 예시를 요약해서 적어둔 것입니다. - A 회사에서 운영하는 급여 관리 시스템을 만들려고 한다. 정규직을 뜻하는 PermanentWorker는 이름과 급여 액수가 멤버 변수로 선언되어 있고 생성자, 멤버 변수에 대한 Get함수 그리고 멤버 변수의 정보를 출력하는 함수로 클래스가 정의되어 있다. - 이 클래스를 객체로 만들어 50개를 저장할 객체 배열을 멤버변수로 만들 것이다. 이 멤버 변수를 지니는 클래스는 EmployeeHandler 클래스이다. EmployeeHandler는 정규직을 뜻하는 객체 배열을 통해 직원을 관리하고 함수로 실 급여액을 계산하거나 정규직 객체를 배열에 동적 할당으로 추가시키는 일 등을 할 것이다. - 여기까지가 A 회사..
1. 이것은 무엇인가? - 이 게임은 몬스터 3마리와 동시에 전투를 벌이는데 턴제 방식으로 서로의 동작을 처리하여 서로의 체력을 감소시켜 살아남는 게임이다. - 클래스를 배우고 있는 중인 만큼, 클래스 중심으로 프로그래밍하는 법을 익히는 게임이 될 것이다. 2. 요구 사항 - 플레이어와 몬스터 3마리와 동시에 싸우는 게임이다. 싸우는 방식은 플레이어 - 몬스터1 - 플레이어 - 몬스터2 ... 이런 식으로 싸우게 할 것이다. - 같은 몬스터 3마리로 하는 것이 아니라 다양한 몬스터가 무작위로 결정될 수 있도록 한다. 이 게임 같은 경우엔 본인이 구상한 몬스터로 하피와 큰턱괴물이라는 이름의 몬스터가 무작위로 결정될 것이다. - 플레이어와 각 몬스터는 기본기 하나와 스킬 3개로 구성될 것이다. 기본기는 부모..
1. C++에서 초기화 스타일과 복사 생성자 - C에서는 다음과 같은 방식을 주로 선호한다. int num = 20; int& ref = num; - C++에서는 다음과 같은 방식도 허용한다. int num(20); int& ref(num); - 이와 같은 방식이 허용될 때, 기본 자료형 말고 사용자가 정의한 클래스에도 가능하지 않을까? 예를 들어서 객체 생성 시 이미 생성된 같은 클래스의 객체를 대입한다는 것이다. MyClass obj1(); MyClass obj2 = obj1; MyClass obj3(obj1);// 이런 유형이 가능하지 않을까? - MyClass obj1(obj2)를 생성자 호출 관점으로 다시 보자. MyClass형 객체를 생성 - 그 객체의 이름은 obj1 - obj2를 인자로 받..
1. 이것은 무엇인가? - 이 게임은 4x4 2차원 배열 게임판에 16개의 숫자를 무작위로 섞고 그 섞은 배열을 순서대로 나열할 수 있게 조작하여 완성하는 게임이다. 일반적으로 그림 맞추기 게임으로 익숙할 것이다. 2. 요구 사항 - 게임 시작과 게임 종료를 제공하는 메뉴 화면 구현 - 3가지 선택지에 따라서 섞는 횟수가 다른 난이도 시스템 구현 - 메뉴 화면에서 게임 종료를 선택하지 않는 한, 계속 해서 게임을 할 수 있는 시스템 구현 - 게임의 시작점을 항상 가장 왼쪽 상단, 하단, 가장 오른쪽 상단, 하단 중 하나로 시작할 수 있게 구현 - 플레이어가 조종하는 커서가 게임판을 벗어나는 불상사가 일어나지 않도록 구현 3. 새로 알게 된 점 - 클래스의 생성자를 통해서 다양한 것을 할 수 있다는 점을 ..
이 글은 C++에서 제공하는 delete와 delete[]의 차이점을 조사하고 익히기 위해 작성하였다. 1. new와 delete - C에서 동적할당을 위해 malloc을 사용했었고 할당에 대한 해제 및 소멸을 위해 free를 썼었다. - C++에서는 새롭게 new와 delete를 제공한다. int* ptr = new int; // 동적 할당 delete ptr; // 해제 및 소멸 2. delete와 delete[] - delete는 단일 객체로 할당된 메모리를 해제하는 역할을 맡고 있다. 1.에서 적은 코드와 같이 배열이 아닌 단일 객체에 대해서 메모리를 해제한다. - delete[]는 배열로 할당된 메모리를 해제하는 역할을 맡고 있다. 배열로 할당된 각각의 요소의 메모리가 해제된다. 3. 의문점 제..
1. 이것은 무엇인가? - 컴퓨터가 무작위로 중복되지 않은 일정 범위의 숫자를 5x5 게임판에 배열하고 플레이어는 특정 숫자를 지정하여 체크한 후, 가로나 세로 혹은 대각선이든 숫자 5개를 연속하여 1줄을 완성한다면 1 빙고로 인정하고 이 빙고를 3개 달성하는 것이 목표인 빙고 게임이다. - 사실 구조체화한 일대일 턴제 게임보다 더 먼저 만들었으나 시간이 지난 뒤, 수정하려 했으나 일정상 어려움과 시간이 얼마 지나지 않았음에도 내 코드를 내가 다시 익히기 위해 읽어야하는 불상사가 발생하여 일단은 코드만 올리려고 한다. 2. 주요 게임 동작 설명 2-1. 게임 시작 전 숫자 섞기 - 컴퓨터는 2차원 배열 5x5의 첫번째 인덱스에 1부터 25까지의 숫자 중 무작위로 하나를 넣는다. 그리고 그 다음 두번째 인..