01. C와 C++ 비교 C와 C++ 차이점 및 특징 C++ 파일도 C와 동일하게 Visual Studio 상에서 손쉽게 만들 수 있다. 프로젝트를 생성한 뒤 소스파일에서 오른쪽 클릭 후 추가 - 새항목을 선택한 뒤 'main.cpp'와 같이 명명하여 추가하면 된다. image.png iostream iostream 라이브러리는 C++ 표준 입출력...
02. 클래스 구조체와 클래스 일반적으로 C++의 클래스는 구조체보다 효과적인 문법이며 거의 흡사하지만 클래스에서는 내부적으로 함수 등을 포함할 수 있다. 또한 클래스는 상속(Inheritance) 등의 개념을 프로그래밍에서 그대로 이용할 수 있다는 점에서 객체 지향 프로그래밍을 가능토록 해주는 기본 단위이다. 구조체 클래스 객체 지향 프로그래밍의...
03. 생성자와 소멸자 생성자 C++에서 생성자(Constructor)를 이용해 객체를 생성함과 동시에 멤버 변수를 초기화 할 수 있다. 생성자는 특별한 메소드로 클래스 이름과 동일한 이름으로 구현된다. 생성자의 특징 생성자는 반환값이 없음 생성자는 여러번 정의 될 수 있음(매개변수 다양화) 기본 생성자 C++에서 별도로 생성자를 구현하지 않으면...
04. 클래스 상속 상속 상속(Inheritance)은 객체 지향 프로그래밍의 주요한 특성 중 하나이며 이를 통해 프로그램의 논리적 구조를 계층적으로 구성할 수 있다. 자식 클래스(Child Class)가 부모 클래스(Parent Class)의 속성을 그대로 물려받아 사용할 수 있다. 따라서 소스 코드의 재사용성을 높인다. image.png 상속의 ...
05. 오버로딩 함수 오버로딩 C++은 동일한 이름의 멤버 함수를 다양한 방식으로 활용하기 위해 오버로딩 사용 연산자 오버로딩 C++은 연산자 오버로딩 문법을 활용해 연산자 또한 원하는 방식으로 수정하여 사용 가능 기존에 존재하는 연산자만 정의 가능 멤버연산자(.), 범위 지정 연산자(::) 등의 일부 연산자는 불가 기본적인 연산자 규칙을 따라야 ...
06. 캡슐화 캡슐화 기법 프렌드 C++에서 기본적으로 멤버 변수에 접근하기 위해 public 멤버 함수를 이용한다. 하지만 friend 키워드를 사용하면 특정한 객체의 모든 멤버에 접근 가능하다. 프렌드 함수 프렌드 클래스 프렌드 멤버 함수 외 프렌드 클래스 형태로 사용 가능하며 클래스 자체를 프렌드로 선언하여 private 멤버에 접근 할 수...
07. 다형성 다형성의 기법 Polymorphism이란 여러 개의 서로 다른 객체가 동일한 기능을 서로 다른 방법으로 처리할 수 있는 기능을 의미한다. 예를 들어 칼, 대포, 총 등의 무기들은 공통적으로 '공격'이라는 동일한 기능을 다르게 수행할 수 있다. image.png 따라서 무기 객체에서 attack() 함수를 실질적으로 구현할 필요없이 추상...
08. 템플릿 일반화 C++ 은 일반화 프로그래밍(Generic Programming)이 가능한 언어이다. 따라서 템플릿(Template)을 이용해 일반화 프로그래밍을 사용할 수 있다. 템플릿 템플릿이란 매개변수의 타입에 따라서 별도의 함수 및 클래스를 만들지 않고 다양한 타입에서 동작하는 단 하나의 객체를 정의할 수 있다. 소스코드의 재사용성을 극...
09. 스마트 포인터 스마트 포인터 Smart Pointer는 프로그래머의 실수로 메모리 누수를 방어하기 위한 수단으로 포인터처럼 동작하는 클래스 템플릿이다. 일반적으로 new 키워드를 이용해 기본 포인터가 특정한 메모리 주소를 가리키도록 초기화 한 후 스마트 포인터에 해당 포인터를 넣어서 사용할 수 있다. 스마트 포인터의 종류 unique_ptr ...
STL 컨테이너 어댑터 라이브러리는 활용도가 높은 자료구조 제공한다. Stack, Queue, Priority Queue를 제공한다.STL은 Standard Template Library의 약자로 프로그램에 필요한 자료구조 및 알고리즘을 제공한다 STL이란Stack S
STL 시퀀스 커네이너 라이브러리는 활용도 높은 자료구조 제공기존 C언어로 구현하기 까다로운 다양한 자료구조를 이용하기 쉬움가장 많이 사용되는 것은 벡터와 덱VectorDequeListForward List덱은 양 끝에서 데이터를 넣거나 뺄 수 있는 자료구조이다. 다음
STL 연관 컨테이너 라이브러리는 매우 활용도가 높은 자료구조를 제공연관 컨테이너는 키와 값 형태의 관련 있는 데이터를 쌍으로 저장함가장 많이 사용되는 것은 Set과 MapSetMulti SetMapMulti MapSet은 데이터를 키로 사용하는 연관 컨테이너이다. 정
Exception이란 프로그램이 동작하는 과정에서 발생하는 예상치 못한 오류를 의미한다. C++에서는 발생할 가능성이 높은 오류에 대해서 Exception Handling을 할 수 있다.Try : 특정 코드 블록에서 예외가 발생할 수 있음을 명시Catch : 발생한 예
컴퓨터 네트워크에서 소켓은 통신을 위한 역할을 수행한다. 두 개의 컴퓨터가 통신을 할 때 각 컴퓨터의 소켓을 통해서 데이터를 교환한다.소켓 프로그래밍 방식은 크게 TCP, UDP 두 가지로 분류가 된다.TCP는 연결형 프로토콜이다. UDP에 비해 속도는 느리지만 신뢰성
소켓 통신에 사용되는 함수들의 종류는 다음과 같다.socket(네트워크 주소 체계, 소켓 타입, 프로토콜)소켓을 생성하는 함수며 위와 같은 매개변수를 가지고 초기화 한다. 소켓 생성을 실패하면 -1을 반환한다.네트워크 주소 체계 : IPv4(AF_INET), IPv6(
하나의 솔루션에 두개의 프로젝트를 생성한다. 하나는 Server로 Client로부터 오는 메세지를 받아 다시 전달하는 역할이며 다른 하나는 Client가 된다. 솔루션 탐색기에 보이는 모습은 다음과 같다.이때 각 프로젝트마다 Winsock2 라이브러리를 종속시켜주어야
C++ Boost Asio 라이브러리는 다양한 플랫폼에서 서버 & 클라이언트 모델을 구현하기 위한 목적으로 사용한다고 한다. 이 라이브러리를 사용하면 비동기 IO 프로그램을 포함해 고성능 네트워크 프로그램을 쉽게 구현할 수 있다.Boost 라이브러리 공식사이트에서 OS
Boost.Asio의 IO Service는 통신의 핵심적인 역할을 수행한다. 커널에서 발생한 입출력 이벤트를 디스패치 해주는 기능을 수행한다. 즉 네트워크 상 접속 및 데이터 처리 이벤트를 담당한다.종단점은 네트워크에 존재하는 특정한 컴퓨터에서 실행되고 있는 하나의 프
이전 Websock2 예제와 같이 동일하게 서버 & 클라이언트 구조를 갖추어 솔루션을 생성한다. 서버에서는 클라이언트의 연결요청이오면 현재 시간을 메세지로 생성하여 넘겨주어 클라이언트에서 보이도록 하는 구조이다.