목록분류 전체보기 (67)
코가손의 블로그
static cast "상식적인" 캐스팅만 허용 상식적인 : int float, Player* -> Knight*(다운 캐스팅) int hp = 100; int maxHp = 200; float ratio = static_cast(hp / maxHp); Player* p = new Knight(); Knight* k = static_cast(p); dynamic cast 상속 관계에서의 안전한 형변환, 다형성을 활용한 방식 RTTI(Runtime Type Information) - Runtime에서 관리하는 정보, vftable, 실시간으로 동작할 때 타입을 확인할 수 있는 기법 - dynamic cast를 이용하고 싶으면 virtual 함수가 있어야 한다. class Player { public: vi..
문자 ASCII(American Standard Code for Information Interchange) char : 알파벳, 숫자, 문자를 나타낸다 wchar_t : 유니코드 문자를 나타낸다, UTF16 저장 ex) wchar_t wch = L'안'; unicode 전 세계 모든 문자에 대해 유일한 코드를 부여한 것 UTF8 - 알파벳, 숫자 1바이트 - 유럽 지역의 문자 2바이트 - 한글 한자 등 3바이트 UTF16 - 알파벳, 숫자, 한글, 한자 등 거의 대부분 문자 2바이트 *cout은 char 전용, wchar 표현하고 싶다면 wcout 써야한다. Escape Sequence 표기하기 애매한 문자를 표현할 수 있도록 해줌 \t : 아스키 코드9 => tab \r : 아스키 코드13 => Ca..
int main() { int user[500 * 1000000]; } 코드가 실행되면 main함수의 스택 프레임의 크기는 int x 50억 만큼의 크기 이상을 가져 stack overflow를 일으킨다. 온라인 서비스를 제공한다고 가정했을 때 1명의 user가 접속했다면 1명분 만큼 5만명이 접속했다면 5만명 만큼 할당하는 유연한 메모리 관리가 필요하다. 이 때, 메모리를 프로그램 내에서 동적으로 할당하는 방법을 사용한다. C++에서는 기본적으로 CRT(C런타임 라이브러리)의 힙 관리자를 통해 힙 영역을 사용하게 된다. 원한다면 직접 API를 통해 힙을 생성하고 관리할 수도 있다. malloc void* pointer = malloc(sizeof(Monster)); // Monster객체 크기만큼 메모..
class Position { public: ... Position operator+(const Position& other) { _x = _x + other._x; _y = _y + other._y; return *this; } private: int _x; int _y; } int main() { Position p1(3, 4); Position p2(4, 5); Position val; val = p1 + p2; } p1 + p2 는 코드로 보기 편하기 위함이고 Position operator+( const Position& other)메소드로 p1.operator+(p2)라고 볼 수 있다. p1과 p2를 더한 값을 넘겨주어야 하기 때문에 return *this; 가 필요하다.