목록전체 글 (253)
bdfgdfg
연산자 오버로딩 - 연산자를 중복정의. 사용자 정의 자료형(클래스,구조체)에서 연산자를 재정의하는 것. - 기본 연산자의 기능을 클래스(객체)에도 적용이 가능하다는 의미. - 대부분의 연산자는 전역함수,클래스(구조체)에서 정의 가능하다. 연산자 오버로딩이 불가능한 연산자 . 멤버 접근 연산자 .* 멤버 포인터 연산자 :: 범위 지정 연산자 ? : 삼항 연산자 sizeof 바이트 크기 계산 연산자 typeid RTTI 관련 연산자 static_cast 형변환 연산자 dynamic_cast 형변환 연산자 const_cast 형변환 연산자 reinterpret_cast 형변환 연산자 형식 리턴타입 operator연산자키워드 (매개변수..) 멤버 연산자 오버로딩 : 클래스 및 구조체 내부에 존재하는 연산자 오버..
블록킹, 논 블록킹, 동기, 비동기(Blocking, Non-Blocking, Synchronous I/O, Asynchronous I/O) 1 2 3 4 // 기본적인 TCP소켓을 만드는 방법 SOCKET socket = ::socket(AF_INET, SOCK_STREAM, 0); // 이렇게 만들어진 소켓은 기본적으로 BLOCKING모드. // WSASocket함수로도 소켓 핸들을 얻을 수 있는데, 기본적으로 기능은 똑같다. cs 기본적으로 소켓을 생성할 때 만들어지는 소켓 핸들은 블록킹(Blocking)모드이다. 블로킹은 디바이스에 처리 요청을 걸어 놓고 응답을 대기하는 함수를 호출할 때 스레드에서 발생하는 대기 현상. - 즉 간단하게 동기 I/O 함수를 호출할 때 해당 스레드에서 발생하는 대기 ..
Log Class - 온라인 게임 서버에서 로그가 차지하는 중요성은 매우 높다. - 온라인 게임 서버에서 로그는 현재 상태를 사용자에게 정확하고 자세하게 알려줄 수 있는 유일한 도구. -> 로그를 정확하게, 필요할 때 남기지 못한다면 서버가 제대로 동작하는지 문제가 없는지에 대한 파악이 어렵다. - Log클래스는 로그의 종류를 알림과 에러로 나눔으로써 자신이 원하는 정보를 보다 빠르게 찾게 한다. -> 중요도에 따라서 LOW, NORMAL, HIGH, CRITICAL 등 모두 4가지 등급을 두어 쉽게 정보의 중요성을 파악. - 로그를 남기는 것은 중요하지만 꼭 필요한 것들을 로그로 남기는 게 좋다. -> 1. 로그가 어떤 함수에서 남겨졌는지 알아야 한다. -> 2. 누구에 의해서 로그가 남겨졌는지를 알아..
다형성(Polymorphism) 객체지향 프로그래밍에서의 다형성은 간단히 말해 모습은 같은데 형태는 다른 것을 의미한다. 다형성을 뜻하는 영어 단어인 Polymorphism은 여러 개를 의미하는 'poly'와 모습 및 모양을 뜻하는 그리스어 'morphism'에서 온 단어로 여러 가지 형태라는 의미. C++에서의 다형성은 가상 함수(virtual, 함수, 연산자 오버 로딩, 템플릿 등이 있다. C++과 같은 객체지향 언어에서는 어떤 객체의 포인터 변수에서 자식(파생) 클래스 객체의 포인터 주소 값도 할당이 될 수 있다. 물론 그 반대도 가능하다. (다운 캐스팅, 업 캐스팅) 여기서 부모 클래스의 객체 타입(Type)에서 자식 클래스의 객체가 할당되어있다면 virtual 키워드(가상 함수)를 이용해 부모 ..