목록C++ (62)
나만의 작은 도서관
레퍼런스란(Reference)?변수 선언 시 타입 뒤에 &를 붙여주는 것으로, 어느 변수의 또 다른 이름, 즉, 이명(alias)을 컴파일러에게 알려주는 것이다. 레퍼런스의 특징레퍼런스는 선언만 할 수 없다.레퍼런스는 선언 시 반드시 정의까지 해야 한다. 선언만 하는 경우 오류가 발생한다.int a = 10;int& another_a1; // 정의가 되어있지 않으므로, 오류int& another_a2 = a; // 이처럼 반드시 정의까지 해야한다. 레퍼런스는 재정의를 할 수 없다레퍼런스가 정의되었다면, 해당 레퍼런스가 소멸될 때까지 다른 변수의 레퍼런스가 될 수 없다.(재정의 불가)int a = 10;int &another_a = a; // another_a은 a의 레퍼런스int b = 3;anothe..
포인터(Pointer)란?포인터는 메모리 상에 위치한 특정한 데이터의 (시작) 주소값을 저장하는 변수를 말한다. 포인터 선언// [포인터 타입]* [포인터 이름] int* p [= nullptr]; 참조(&) 연산자와 역참조(*) 연산자 참조(&): 변수 앞에 '&'를 붙이면 값 대신 주소를 반환한다.역참조(*): 변수 앞에 '*'를 붙이면 변수가 저장 중인 주소값에 저장된 값을 반환한다. 역참조는 포인터 변수만 사용할 수 있다.int a = 10;int* ptr = &a;cout 포인터와 멤버 데이터포인터 변수의 타입이 struct 또는 class인 경우, 멤버 데이터를 꺼낼 땐 화살표('->')를 사용한다.#include using namespace std;struct A { void fun..
열거형이란?열거형(Enumerations)은 열거자(enumerator)라 불리는 정수 상수 집합으로 구성된 사용자 정의 형식을 말한다.enum 키워드C언어에서 넘어온 열거형 키워드이다. 사용법은 아래와 같다.enum [identifier] [: type] {enum-list}// identifier: 열거형에 지정된 형식 이름 ⇒ 변수 이름// type: 열거자(enumerator)의 타입. 모든 열거자는 해당 타입으로 표현된다. 모든 “정수” 계열 타입이 가능하다.// enum-list: 열거자가 쉼표로 구분된 리스트. 범위에 있는 모든 열거자의 이름은 고유해야 하지만, 값은 중복될 수 있다. // 지역 변수와 같이 선언된 범위 내에서만 살아있다.// ex.enum A : int {ZERO..
배경여기저기 코드를 보다 보면 class의 전유물이라고 생각했던 기능들이 struct에서 멀쩡히 돌아가는 경우를 종종 보았다. 이것도 돼? 저것도 돼? 하며 놀란적이 한두 번이 아닌데, 이번 시간에는 struct가 어디까지 가능한지 알아보도록 한다. C++에서 struct와 class는 맥락상 동일하다.매우 충격적인 결과지만 사실이다. 유일한 차이점으로 기본 접근 지정자(Access specifier)가 struct은 public, class는 private이다. 이거 말곤 전부 똑같다. (어셈블리 언어로 변환해서 봐도 완전히 동일한 구조를 가지고 있다.) 아래 코드에서의 MyStruct와 MyClass는 기본 접근 지정자만 다를뿐 완전히 같다.#include using namespace std;stru..

static이 붙은 변수, 정적 변수변수는 자신이 정의된 범위(중괄호로 표현됨)를 벗어나면 파괴된다. 즉, 변수가 선언된 중괄호를 벗어나는 순간, 변수의 생명 주기가 끝나면서 사라지게 된다.하지만 변수가 static이 붙은 정적 변수라면 자신이 선언된 범위를 벗어날 때 사라지는 것이 아닌 프로그램이 종료될 때 사라진다. 아래 코드를 통해 정적 변수가 범위를 벗어나도 값이 유지되어 함수를 호출할 때마다 증가하는 것을 볼 수 있다.+) 참고로 함수 내에 정적 변수가 존재할 경우, 정적 변수의 초기화는 함수가 처음 호출될때 단 한 번만 이루어진다.#include using namespace std;void func1(){ static int n = 0; // func1() 최초 호출 시에만 실행(초기화 ..

목차Overlapped 모델의 아쉬운 성능IOCP 모델의 특징IOCP 모델의 작동 과정IOCP 모델을 이용한 서버 만들기깃헙 코드참고 자료Overlapped 모델의 아쉬운 성능Overlapped 모델도 나름 성능이 준수하지만, 이전 글에서 알아봤듯, 이벤트 기반 / 콜백 기반 둘 다 성능을 떨어뜨리는 요인을 가지고 있었다. 물론, 그럼에도 Overlapped 모델은 준수한 성능을 보여주지만 게임서버에서 '준수한 성능' 정도로는 용납되지 않는다. 서버의 성능이 중요한 게임서버는 더 좋은 성능을 가진 모델이 있다면 그 모델을 써야할 것이다. 따라서, 오늘은 게임 회사에서 자주 사용할 정도로 성능이 좋은 IOCP 모델에 대해 알아보도록 하겠다.IOCP 모델의 특징IOCP 모델이란?IOCP는 I/O Comple..