C++ 36

자료구조

자료구조란 다수의 데이터를 모아놓은 하나의 자료형이라고 생각할 수 있다. (앞에서 배운 배열도 자료구조에 속한다.) 예를 들어 int 자료형 100개가 필요하다고 가정하면 int Arr[100] 이런식으로 배열로 만들어서 관리할 수 있다. 이런것을 컨테이너라고 하고, 여기에는 배열처럼 순차적인 자료구조만 있는것이 아니고 다양한 자료구조가 존재한다. 자료구조로서 언어에서 의미를 가지려면 필수적인 함수들이 몇가지 존재한다. 1. 데이터의 크기를 알수있게 해주는 함수 2. 데이터에 접근하는 방법에 관련된 함수 혹은 방법 3. 데이터의 탐색에 관련된 함수 혹은 방법 4. 데이터의 추가에 관련된 함수 혹은 방법 자료구조(컨테이너)의 기본 분류 -> 자료의 관리 방식에 의한 분류 시퀸스 컨테이너 연관 컨테이너 어댑..

C++ 2020.12.29

Template

템플릿(Template)은 메타프로그래밍을 C++이 표현하는 방식이다. 객체지향이라는 개념이 있고 각언어가 객체지향의 개념을 각자의 방식으로 표현한다. 메타프로그래밍이란? 넓은 의미에서 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다. 이 말은 int main() { int a = 10 + 10; } 위의 코드를 컴파일러는 우리의 생각처럼 10에 10을 더해서 a는 20이구나가 아니라 그냥 20이라는 결과값을 넣는다.이와같이 생각 할 수 있다. 템플릿 문법 template void Func(T _Value) { std::cout

C++ 2020.12.23

멤버함수에서 함수포인터 사용

class Player { public: void Attack(); }; void Player::Attack() { //플레이어의 공격 } int main() { Player NewPlayer; void (Player:: *PlayerAtt)() = &::Player::Attack; (NewPlayer.*PlayerAtt)(); } 이렇게 멤버함수 포인터를 사용할 수 있다. 명확하게 형을 명시해 줘야하고 함수를 넣어줄때도 &를 붙여주고 함수의 풀네임을 넣어줘야 한다. 정리 콜백이란 A라는 객체가 있고 B라는 객체가 있을때 B가 A의 함수를 대신 사용해 주는 경우를 콜백이라고 한다. 대표적인 예가 UI가 있다.UI는 게임에서 필수적이지만 버튼의 기본기능은 굉장히 기본적이다.그치만 해야하는 일이 버튼의 종류..

C++ 2020.12.22

Is A 관계,Has A 관계

class FightUnit { public: int publicInt; protected: int protectedInt; private: int privateInt; public: void Fight(FightUnit& _Other) { } }; class Player : public FightUnit { }; 위의 코드에서 Player 클래스는 FightUnit을 상속 받았다. 상속은 Is A 관계이기 때문에 Player와 FightUnit은 Is A 관계이다 Player는 FightUnit 이다. Player Is A FightUnit class Weapon { }; Weapon 클래스를 추가하고 class Player : public FightUnit { private: Weapon* Ptr; ..

C++ 2020.12.22

상속문법(부모클래스 앞에 붙는 접근제한지정자)

class FightUnit { public: int publicInt; protected: int protectedInt; private: int privateInt; public: void Fight(FightUnit& _Other) { } }; class Player : public FightUnit { }; Player가 FightUnit을 상속받을때 부모클래스 앞에다 접근제한지정자를 써줄 수 있고 상속의 개념은 보이지는 않지만 부모의 멤버변수인 publicInt,protectedInt를 멤버변수로 가지고 있는것이다. 이때 상속문법 앞에 붙는 접근제한 지정자는 다음의 의미를 가진다. 부모의 접근제한지정자랑 나의 접근제한지정자랑 비교해서 더 좁은 범위의 제한지정자를 따라가는것이다. 위의 코드로 본다..

C++ 2020.12.22