업캐스팅 (Upcasting) 업캐스팅은 자식 클래스 타입에 대한 참조(포인터 혹은 레퍼런스)를 부모 타입으로 형변환하는 것이다. 부모클래스 *b = new 자식클래스; 위 코드는 분명 다른 자료형임에도 어떠한 오류가 발생하지 않는다. 이는 자식 클래스에서 부모 클래스 객체에 할당될때 묵시적 형변환이 일어나기 때문이다. (실제로 모든 업캐스팅은 묵시적으로 일어날 수 있다.) 이는 포인터뿐만 아니라 좌변이 부모 클래스 레퍼런스 변수일 때도 일어난다. 이는 Call-By-Reference에도 발생한다. 자식클래스 d; 부모클래스 &p = d; void f(부모클래스 &b) { // ... } int main() { 자식클래스 d; f(d); ) 하지만 포인터나 레퍼런스를 사용하지 않고 객체 자체끼리 대입하려..
순수 가상 함수 (Pure Virtual Fuction) 함수의 실체가 없는 함수 순수 가상 함수는 말그대로 존재하지 않는 개념과 같은 함수로 어떠한 실제 구동 코드 라인이 존재하지 않는다. 이러한 종류의 함수가 존재하는 이유는 다형성을 지원하고 특정 동작을 반드시 제공할 수 있도록 하며, 컴파일러 오류를 예방할 수 있다. C++에서는 함수를 선언하고 "=0"를 붙이면 순수 가상 함수를 선언할 수 있다. 추상 클래스(Abstract class) 순수 가상 함수가 하나라도 있는 클래스는 '추상 클래스'(abstract class)라고 불린다. 추상 클래스가 특별한 명칭이 붙는 이유는 추상 클래스로 인스턴스를 생성할 수 없기 때문이다. #include #include using namespace std; c..
스마트 포인터와 일반 포인터 동적 할당 객체는 delete 키워드를 통해 매번 할당 해제를 해야한다. 하지만 C++11부터는 스마트 포인터를 통해 메모리 해제를 자동으로 할 수 있게 된다. 하지만, 모든 포인터를 스마트 포인터로 사용하는 것이 아니기에 일반 포인터가 사용되는 시점과 포인터의 소유권의 위치를 명확히 알아야 할당 해제에 어려움이 없을 것이다. 메모리 소유권 (Memory Ownership) "메모리 소유권"이라는 용어는 일반적으로 프로그래밍에서 메모리 리소스의 소유 및 관리에 관련된 개념을 나타냅니다. 이는 특히 메모리 할당과 해제에 관련된 것이다. int *a, *b; a = new int(5); b = a; cout
게임 서버 게임을 여러 사람과 즐기기 위해선 인터넷 연결을 통해 네트워크 통신을 해야한다. 인터넷을 통해 다른 컴퓨터나 서버 연결이 된다면 게임 클라이언트는 필요한 정보를 외부에서 받아 플레이어의 화면에 출력할 수 있다. 이러한 멀티 플레이를 위한 게임 서버에도 게임의 장르에 따라 사용되는 다양한 형태의 네트워크가 존재한다. P2P (Peer-To-Peer) P2P 서버는 고전 게임과 더불어 현재도 특정 게임 장르에 고정적으로 사용되는 서버 형태이다. P2P의 특징이라면 중앙 서버가 없이 클라이언트 컴퓨터끼리 직접 통신하는 방식을 말한다. 하여 프로그램 엔진으로 컴퓨터간 연결을 통해 데이터나 파일을 송수신하기만하면 되는 간편하고 빠른 속도를 제공한다. (과거에 비해 인터넷이 많이 발전하면서 속도가 많이 ..
예외 처리 프로그램 실행 중에는 예기치 못한 오류가 발생될 일이 많이 생긴다. 이는 프로세스 내부만이 아닌 외부로 부터의 입/출력 혹은 제어 신호에 의해 발생할 수 도 있다. 예로 파일을 열려할 때, 권한 문제로 거부를 당하거나, 함수에 잘못된 인수가 들어오고, 컨테이너 크기보다 더욱 방대한 데이터가 입력되는 경우를 예로 들 수 있다. 이런 경우 런타임 에러를 피하고 프로그램을 안전하게 종료시키기 위하여 올바른 정보로 재수행을 재시도하거나, 입력을 다시 받는 등의 적절한 예외 처리를 하여야 한다. 간단한 예외 처리 팩토리얼 오류 발생 #include using namespace std; int fact(int n) { if (n == 1) return 1; return n * fact(n - 1); ) ..
- Total
- Today
- Yesterday
- 스레드
- 운영체제
- 할당
- 레지스터
- 상속
- 수학
- 메모리
- 멀티스레드
- 컴파일
- 게임수학
- 포인터
- c++
- 명령어
- 알고리즘
- 인터럽트
- const
- 초기화
- 프로세스
- 클래스
- thread
- CPU
- 함수
- 백준
- 구조
- static_cast
- 입출력
- dynamic_cast
- 크기
- New
- malloc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |