GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • protobuf
  • job queue
  • GAME Client
  • Direct11
  • RPG Game
  • server
  • Game Room
  • session
  • client
  • Player State
  • Network Worker
  • Direct3D
  • core
  • Other Character
  • Game Server
  • c++
  • Algorithm Strategies
  • Player Move Packet
  • Destination Move Packet
  • UE5

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[C++] 5 - 기초 문법 공부 일지(CAST)
C++ Algorithm & Study/C++ & Algorithm Strategies

[C++] 5 - 기초 문법 공부 일지(CAST)

2022. 12. 1. 00:29
  • Class Create
    • Creature, Knight
class Creature
{
public:
	Creature() {}
	virtual ~Creature() {}

public:
	int _creatureId = 0;
};


class Player : public Creature
{
public:
	Player() {}
	virtual ~Player() {}

	int		GetHp() { return _hp; }
	void	SetHp(int hp) { _hp = hp; }

private:
	int _hp = 100;
};

class Mage : public Player
{
public:
	Mage() {}
	virtual ~Mage() {}

private:
	int _arrowCount = 10;
};

class Weapon
{
public:
	Weapon() {}
	~Weapon() {}
};
  • C - Style Cast
    • 의미 유지 및 원본 객체와 다른 비트열 재구성
int main()
{
	// C-Style Cast - 의미 유지 및 원본 객체와 다른 비트열 재구성
	Knight* knight = new Knight(); // 상속 관계에 있는 클래스간 변환
	Creature* creature = (Knight*)knight;
}
  • C++ - Style Cast
    • static_cast - 타입 원칙에 비춰볼 때 상식적인 캐스팅만 허용
      • int - float
      • Creature, Knight - 상속구조
    • dynamic_cast - 상속 관계에서의 안전 변환
      • RTTI - Runtime Type Information
    • const_cast - 포인터 또는 참조형의 const를 제거
    • reinterpret_cast - 임의의 포인터 타입끼리 변환을 허용
int main()
{
	int hp = 100;
	int maxHp = 200;
	
	// static_cast - 타입 원칙에 비춰볼 때 상식적인 캐스팅만 허용
	float ratio = static_cast<float>(hp) / maxHp; // int - float

	Player* player = new Player();
	Creature* creature = static_cast<Player*>(player); // Creature - Knight

	// dynamic_cast - 상속 관계에서의 안전 변환
	Mage* mage = dynamic_cast<Mage*>(player);

	// const_cast
	const char* name = "Choi";
	char* name2 = const_cast<char*>(name);

	// reinterpret_cast
	Player* player2 = new Player();
	Weapon* weapon = reinterpret_cast<Weapon*>(player2);
}

'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글

[C++] 7 - 기초 문법 공부 일지(Array)  (0) 2022.12.01
[C++] 6 - 기초 문법 공부 일지(동적 할당)  (0) 2022.12.01
[C++] 4 - 기초 문법 공부 일지(OOP)  (0) 2022.11.29
[C++] 3 - 기초 문법 공부 일지(Pointer)  (0) 2022.11.29
[C++] 2 - 기초 문법 공부 일지  (0) 2022.11.28
    'C++ Algorithm & Study/C++ & Algorithm Strategies' 카테고리의 다른 글
    • [C++] 7 - 기초 문법 공부 일지(Array)
    • [C++] 6 - 기초 문법 공부 일지(동적 할당)
    • [C++] 4 - 기초 문법 공부 일지(OOP)
    • [C++] 3 - 기초 문법 공부 일지(Pointer)
    GameChoi
    GameChoi

    티스토리툴바