반응형 [C++ 마스터] Day 14: 연산자 오버로딩 연산자 오버로딩 (Operator Overloading)연산자 오버로딩은 기존의 C++ 연산자를 사용자 정의 타입(클래스)에 대해 재정의하는 기능입니다. 이를 통해 객체 간의 연산을 보다 직관적으로 수행할 수 있습니다. 1. 기본 개념연산자 오버로딩은 함수 형태로 정의되며, 클래스의 멤버 함수 또는 전역 함수로 구현할 수 있습니다. 2. 멤버 함수로 연산자 오버로딩연산자를 멤버 함수로 오버로딩하는 방법은 다음과 같습니다:class Complex {private: double real; double imag;public: Complex(double r = 0, double i = 0) : real(r), imag(i) {} // + 연산자 오버로딩 Complex operator .. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 10: HTTP 서버 개발 (Boost.Beast) Boost.Beast 소개Boost.Beast는 HTTP와 WebSocket 프로토콜을 지원하는 라이브러리입니다. Boost.Asio를 기반으로 하여 비동기 네트워크 프로그래밍을 쉽게 구현할 수 있습니다. HTTP 서버를 개발하기 위해 Boost.Beast를 사용하면 간단하고 효율적인 코드 작성을 할 수 있습니다.Boost.Beast 설치Boost 라이브러리 설치는 이전 단계에서 다루었으며, Boost.Beast는 Boost 라이브러리의 일부입니다.HTTP 서버 구현HTTP 서버를 구현하기 위해 다음과 같은 단계를 따릅니다:io_context: 비동기 작업을 관리하는 io_context 객체를 생성합니다.tcp::acceptor: 클라이언트 연결을 수락하기 위한 acceptor 객체를 생성합니다.세션 관.. 2024. 8. 1. [C++ 마스터] Day 11: 구조체와 열거형 구조체 (Structures)구조체는 여러 개의 변수(필드)를 하나의 복합 데이터 타입으로 묶는 데 사용됩니다. 구조체를 사용하면 관련 있는 데이터를 하나의 단위로 다룰 수 있습니다. 1. 구조체 선언과 정의구조체를 선언하고 정의하는 방법은 다음과 같습니다:struct Person { string name; int age; double height;}; 2. 구조체 변수 선언과 초기화구조체 변수를 선언하고 초기화하는 방법은 다음과 같습니다:Person person1;person1.name = "John";person1.age = 30;person1.height = 5.9;Person person2 = {"Jane", 25, 5.5}; 3. 구조체와 포인터구조체 포인터를 사용하면 구조체의 .. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 11: 디자인 패턴 심화 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern)옵저버 패턴은 행위 패턴 중 하나로, 객체 간의 일대다 관계를 정의합니다. 한 객체의 상태 변화가 다른 객체들에 자동으로 통지될 수 있도록 합니다. 이를 통해 객체들 간의 느슨한 결합을 유지하면서도 이벤트 기반 프로그래밍을 할 수 있습니다. 옵저버 패턴의 특징일대다 관계: 하나의 주체(Subject) 객체가 다수의 옵저버(Observer) 객체에 상태 변화를 통지합니다.느슨한 결합: 주체와 옵저버는 서로 독립적으로 동작하며, 주체는 옵저버가 누구인지 알 필요가 없습니다.이벤트 기반: 상태 변화가 발생할 때 자동으로 통지가 이루어집니다.옵저버 패턴의 구조Subject (주체): 상태를 가지고 있으며, 상태 변화 시 옵저버에게 통지합니다.Observer (옵저버).. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 11: 표현식 템플릿 (Expression Templates) 표현식 템플릿이란?표현식 템플릿(Expression Templates)은 C++ 템플릿 메타프로그래밍 기법으로, 수식의 계산을 최적화하여 성능을 향상시키는 방법입니다. 주로 수치 연산 라이브러리에서 사용되며, 연산 중간 결과를 저장하지 않고 최적화된 코드로 변환합니다. 표현식 템플릿의 작동 방식표현식 템플릿은 연산자 오버로딩과 템플릿을 사용하여 연산의 중간 결과를 표현식 트리로 변환합니다. 그런 다음 이 트리를 평가하여 최적화된 코드를 생성합니다. 기본 예제간단한 벡터 클래스를 사용하여 표현식 템플릿을 구현해보겠습니다. 1. 벡터 클래스 정의먼저 기본 벡터 클래스를 정의합니다.#include #include class Vector {public: std::vector data; Vector(s.. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 11: RESTful API 설계와 구현 RESTful API 소개REST(Representational State Transfer)는 웹 서비스 설계 아키텍처입니다. RESTful API는 REST 아키텍처 스타일을 따르는 API입니다. RESTful API는 클라이언트와 서버 간의 통신을 단순화하고 표준화하는 데 사용됩니다. HTTP를 기반으로 하며, URL을 통해 리소스를 식별하고, HTTP 메서드를 사용하여 리소스를 조작합니다.RESTful API의 주요 특징리소스 기반: 모든 것은 리소스로 취급되며, 각 리소스는 고유한 URL로 식별됩니다.HTTP 메서드 사용: RESTful API는 HTTP 메서드를 사용하여 리소스를 조작합니다.GET: 리소스 조회POST: 리소스 생성PUT: 리소스 전체 수정PATCH: 리소스 일부 수정DELETE.. 2024. 8. 1. [C++ 마스터] Day 12: 클래스와 객체 지향 프로그래밍 (OOP) 기초 객체 지향 프로그래밍 (Object-Oriented Programming)객체 지향 프로그래밍(OOP)은 객체를 중심으로 프로그램을 구성하는 프로그래밍 패러다임입니다. C++는 OOP를 지원하며, 이를 통해 더 구조적이고 재사용 가능한 코드를 작성할 수 있습니다. OOP의 주요 개념에는 클래스, 객체, 상속, 다형성, 캡슐화, 추상화 등이 있습니다. 클래스 (Classes)클래스는 객체를 정의하는 데 사용되는 청사진 또는 틀입니다. 클래스는 데이터 멤버(변수)와 멤버 함수(메서드)를 포함합니다. 1. 클래스 선언과 정의클래스를 선언하고 정의하는 방법은 다음과 같습니다:class Car {public: // 접근 지정자 string brand; string model; int year; .. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 12: 디자인 패턴 심화 - 데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern)데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가할 수 있도록 하는 구조 패턴입니다. 이 패턴을 사용하면 서브클래싱 없이도 객체의 기능을 확장할 수 있습니다. 데코레이터 패턴은 기본 객체와 그 객체의 데코레이터를 동일한 인터페이스로 취급하여 기능을 확장합니다. 데코레이터 패턴의 특징동적 기능 확장: 객체의 기능을 동적으로 확장할 수 있습니다.개방-폐쇄 원칙: 기존 코드의 수정 없이 새로운 기능을 추가할 수 있습니다.유연한 설계: 상속 대신 합성을 사용하여 기능을 확장합니다.데코레이터 패턴의 구조Component (구성 요소): 기본 객체 인터페이스 또는 추상 클래스ConcreteComponent (구체적 구성 요소): 기본 객체의 구체적 구현Decor.. 2024. 8. 1. [C++ 마스터] Day 9: 포인터와 참조자 포인터 (Pointers)포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 포인터는 매우 강력한 도구로, 동적 메모리 할당, 배열, 함수 인자 등에서 유용하게 사용됩니다. 1. 포인터 선언과 초기화포인터를 선언할 때는 데이터 타입 뒤에 *를 붙입니다. 포인터는 다른 변수의 주소를 저장할 수 있습니다.int a = 10;int *p = &a; // 포인터 p는 변수 a의 주소를 저장 2. 주소 연산자와 간접 참조 연산자주소 연산자 (&): 변수의 메모리 주소를 반환합니다.간접 참조 연산자 (*): 포인터가 가리키는 변수의 값을 반환합니다.int a = 10;int *p = &a; // p는 a의 주소를 저장cout 3. 포인터 연산포인터는 산술 연산이 가능합니다. 포인터에 숫자를 더하거나 빼면,.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 9: 디자인 패턴 심화 - 팩토리 패턴 (Factory Pattern) 팩토리 패턴 (Factory Pattern)팩토리 패턴은 객체 생성 로직을 별도의 팩토리 클래스로 분리하여, 객체 생성의 유연성과 확장성을 높이는 디자인 패턴입니다. 이는 객체 생성 방식을 캡슐화하여 클라이언트 코드가 객체 생성 방법에 의존하지 않도록 합니다. 팩토리 패턴의 종류단순 팩토리 패턴 (Simple Factory Pattern)팩토리 메서드 패턴 (Factory Method Pattern)추상 팩토리 패턴 (Abstract Factory Pattern)단순 팩토리 패턴 (Simple Factory Pattern)단순 팩토리 패턴은 객체 생성을 위한 메서드를 제공하는 클래스를 정의합니다. 이 클래스는 클라이언트 코드 대신 객체를 생성합니다. 단순 팩토리 패턴 예제#include #include .. 2024. 8. 1. 이전 1 ··· 9 10 11 12 13 14 15 ··· 18 다음 반응형