전체 글 216

[게임 프로그래머 입문 올인원] 객체지향 : 연산자 오버로딩 (32강)

D. 연산자 오버로딩 1. 연산자 오버로딩의 기초 a. 연산자 오버로딩이란? 🌟 기존 연산자를 사용자 정의 클래스나 데이터 형식에 대해 재정의하여 새로운 동작을 정의하는 것을 의미 사용자 정의 객체끼리 연산자를 사용하거나, 사용자 정의 데이터 형식에 기본 연산자를 적용 사용자 정의 클래스의 편의성과 가독성을 높이는 데 사용 사용자 정의 데이터 형식에 대한 다양한 연산을 지원하는 데 유용 b. 멤버 연산자의 함수 버전 a op b 형태에서 왼쪽을 기준으로 실행 a가 class여야만 함 (반대의 경우 에러) 매개변수는 아무값이나 가능 이름은 'operator연산자' 로생성, 연산자는 연산하려는 연산자로 사용 HTML 삽입 미리보기할 수 없는 소스 class Pos{ public : 클래스이름 operator..

[게임 프로그래머 입문 올인원] 객체지향 : 멤버 변수 초기화 (31강)

C. 멤버 변수 초기화 1. 멤버 변수 초기화 방식 a. 3가지 초기화 방식 1) 생성자 내부 제일 나쁜 방법. 크게 문제가 되진 않지만 비효율적으로 동작 💙 객체가 객체를 구성하는 순서 Circle이 Shape을 상속하면서 Text를 멤버 변수로 가진다고 하면 이렇게 선처리 영역에서 먼저 생성자를 호출하면서 먼저 상속하고 구성되는 요소들 부터 생성되고 소모함 💥 생성자 내부에서 초기화 하는 방식이 제일 안좋은 이유 위처럼 선 처리 영역에서 먼저 생성된 Text() 멤버변수를 아래 그림처럼 생성자 내부에서 또 한번 생성하게 되면 이렇게 당연하게도 Text() 생성자를 두번 호출하게 된다 (심지어 내부에서 생성한 생성자는 바로 소멸되어 호출 순서도 변경됨) 👉 따라서 효율 측면에서 너무 비효율적이라 안좋다..

[게임 프로그래머 입문 올인원] 객체지향 : OOP 3대 요소 / 상속성, 은닉성, 다형성 (28, 29, 30강)

B. OPP 3대 요소 1. 상속성 (inheritance) a. 상속성이란? 🌟 부모 class로부터 매소드와 변수를 상속받는 것 👉 코드의 재사용성 때문에 매우 중요하다 b. 상속의 기본 형태 HTML 삽입 미리보기할 수 없는 소스 #include using namespace std; class Player { public: void Move() { } void Die() { } public: int _hp; int _attack; int _defence; }; class Mage : public Player { public : int _mp; }; int main() { Mage m1; m1._hp = 10;//Player의 hp를 상속받아 사용 } 🎨 도식화 c. Is-A vs Has-A 🌟 상속..

[게임 프로그래머 입문 올인원] 객체지향 : 객체지향 개론 (27강)

A. 객체지향 개론 1. 절차 지향적 프로그래밍 a. C 언어와 함수 c언어 = 절차 지향 프로그래밍 언어 👉 절차 지향 언어에서 가장 중요한건 게임을 진행시키는 요소가 '함수' 라는 것 코드가 방대해지면 나중에 공용으로 함수를 사용하지 못하게 되는 경우가 생기고 언제부턴가는 함수 만으론 관리가 어려워진다 2. 객체 지향적 프로그래밍, Class a. Class의 기초 위와 같은 문제점 때문에 객체 지향 프로그램이 생성됨 객체 지향으로 주로 Class를 사용한다 HTML 삽입 미리보기할 수 없는 소스 #include using namespace std; //어떠한 영역도 차지 X class Knight { //멤버 함수 영역은 code 영역에 들어감 public: void Attack() { cout H..

C++ 문자열 총정리

A. C++ 문자열 개요 1. C++ 문자열 a. C++ 문자열이란? 🌟 메모리에 저장된 일련의 연속된 문자(character)들의 집합 💙 c++에서는 2가지 스타일로 생성 가능 1. c언어 스타일의 문자열 2. string 클래스를 이용한 문자열 2. C언어 스타일의 문자열 a. C 스타일의 문자열 선언 문자열 상수(string constant) : 큰따옴표("")를 사용해 표현되는 문자열 👉 상수인 이유는 이름 X, 내용 변경 X HTML 삽입 미리보기할 수 없는 소스 const int SIZE = 20; char address[SIZE] = "hello";//보이지 않지만 끝에 0 이 있음 b. C스타일의 문자열 특징 문자형 배열을 선언하면 이 배열이 곧 문자열 변수가 됨 C언어 스타일의 문자열 ..

[자료형(data type)] C++ 파생형 포인터 총정리

더보기 A. 포인터 1. 포인터의 개요 a. 주소값의 이해 🌟 데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미 C언어에서는 주소값을 1바이트 크기의 메모리 공간으로 나누어 표현 b. 포인터란? 🌟 메모리의 주소값을 저장하는 변수, 포인터 변수라고도 부름 포인터와 연관되어 사용되는 연산자는 & 주소연산자와 * 참조 연산자가 있음 2. 포인터 연산자 a. 주소(번지) 연산자 🌟 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환 '&'기호는 앰퍼샌드(ampersand)라고 읽음 b. 참조 연산자 🌟 포인터의 이름이나 주소 앞에 사용해 포인터에 저장된 주소에 저장되어 있는 값 반환 '*' 기호는 역참조 연산자로 에스크리터(asterisk operator)라고도 불림 💙 * 연산자의 다양..

[자료형(data type)] C++ 파생형 배열 총정리

더보기 A. 배열 1. 1차원 배열 a. 배열이란? 🌟 같은 타입의 변수들로 이루어진 유한 집합 배열을 구성하는 각각의 값을 배열 요소라고 하며, 위치를 가리키는 숫자는 인덱스라고 함 인덱스는 0부터 시작 (양수만 가능) 같은 종류의 데이터를 많이 다뤄야 하는 경우 사용하는 가장 기본적인 자료구조 b. 1차원 배열 HTML 삽입 미리보기할 수 없는 소스 타입 배열이름[배열길이]; //타입 : 배열 요소로 들어가는 변수의 타입 명시 //배열 이름 : 배열이 선언된 후 배열로 접근하기 위해 사용 //배열의 길이 : 배열 요소의 갯수(생략하면 자동으로 설정됨) 💥 선언만 하고 초기화하지 않으면 쓰레기 값이 저장됨 (주의!) HTML 삽입 미리보기할 수 없는 소스 #include using namespace s..

[정렬 알고리즘] 버블 소팅

A. 정렬 알고리즘 1. 버블 소팅 a. 버블 소팅이란? 🌟 서로 인접한 두 원소를 비교하며 리스트나 배열의 요소들을 정렬하는 방법 컴퓨터 과학 및 프로그래밍에서 사용되는 정렬 알고리즘 중 하나 간단하고 이해하기 쉽다 b. 작동방식 1) 비교 단계 리스트 또는 배열을 처음부터 끝까지 반복하면서 인접한 두 요소를 비교 이때, 첫 번째 요소가 두 번째 요소보다 크다면 두 요소를 교체 2) 교체 단계 만약 첫 번째 요소가 두 번째 요소보다 크면 두 요소를 교체 그 결과로 큰 요소가 리스트의 끝쪽으로 "버블"처럼 이동하게 되며, 작은 요소는 앞쪽으로 이동 3) 반복 비교와 교체 단계를 리스트의 첫 번째 요소부터 마지막 요소까지 계속 반복 : 패스 이러한 과정을 하나의 패스(pass)라고 부르며, 패스가 끝나면 ..