c++
-
C++ 스마트 포인터(Smart Pointer) 이해하기c++ 2025. 3. 2. 21:34
C++의 스마트 포인터는 메모리 관리 자동화를 위한 도구로, 수동으로 new 및 delete를 호출하는 번거로움을 줄이고 메모리 누수(memory leak) 문제를 방지하는 데 도움을 준다. 스마트 포인터는 C++11 이후부터 표준 라이브러리에 포함되었으며, std::unique_ptr, std::shared_ptr, std::weak_ptr가 주요 타입이다.이번 글에서는 스마트 포인터의 종류와 사용법을 예제와 함께 자세히 살펴본다.1. std::unique_ptr - 단일 소유권 스마트 포인터특징객체에 대한 단 하나의 소유자만 존재할 수 있다.복사가 불가능하지만 이동(move) 가능하다.객체가 소유권을 잃으면 자동으로 해제된다.사용 예제#include #include class Resource {pub..
-
고급 문법과 최적화c++ 2025. 3. 2. 19:19
C++는 강력한 성능과 유연성을 제공하는 언어지만, 효과적으로 사용하기 위해서는 고급 문법과 최적화 기법을 이해해야 한다. 특히 제품 수준의 C++ 코딩에서는 성능과 유지보수성을 동시에 고려하는 것이 중요하다.이번 포스트에서는 C++의 고급 기능과 성능 최적화 방법을 설명한다.1. Modern C++ (C++11, C++14, C++17, C++20)의 핵심 기능스마트 포인터(Smart Pointer)C++의 **new**와 **delete**를 직접 사용하는 것은 메모리 누수와 관련된 버그를 초래할 가능성이 있다. 이를 방지하기 위해 스마트 포인터를 사용한다.#include void useSmartPointer() { std::unique_ptr ptr = std::make_unique(10); ..
-
코드 품질과 유지보수성c++ 2025. 3. 2. 19:13
제품 수준(Product-Level) C++ 코딩: 코드 품질과 유지보수성소프트웨어 제품 개발에서는 코드 품질과 유지보수성이 매우 중요하다. 개인 프로젝트에서는 단순히 동작하는 코드를 작성하는 것이 목표일 수 있지만, 제품 수준의 C++ 코딩에서는 장기적인 유지보수와 확장성을 고려해야 한다.이번 포스트에서는 코드 품질과 유지보수성을 높이기 위한 핵심 원칙을 설명한다.1. 클린 코드 작성클린 코드(Clean Code)란 읽기 쉽고 유지보수하기 쉬운 코드를 의미한다. 코드는 개발자뿐만 아니라 팀원, 미래의 유지보수 담당자도 쉽게 이해할 수 있어야 한다.가독성이 높은 코드 작성아래 두 코드를 비교해 보자.가독성이 낮은 코드 예시int f(int a, int b) { return a * b - (a + b..
-
C++ 구조체 vs 클래스: 차이점과 올바른 활용법c++ 2025. 2. 24. 19:03
C++에서 구조체(struct)와 클래스(class)의 차이는 많은 프로그래머들이 한 번쯤 궁금해하는 주제입니다. 구조체와 클래스 모두 데이터를 담을 수 있는 사용자 정의 데이터 타입이지만, 몇 가지 중요한 차이점이 존재합니다.1. 기본 접근 제어자의 차이구조체와 클래스의 가장 큰 차이점은 멤버 변수 및 함수의 기본 접근 제어자가 다르다는 점입니다.구조체(struct): 기본적으로 public 접근 지정자를 가집니다.클래스(class): 기본적으로 private 접근 지정자를 가집니다.예제 코드로 확인해보겠습니다.#include using namespace std;struct MyStruct { int a; // 기본적으로 public};class MyClass { int a; // 기본적..
-
Modern C++c++ 2025. 2. 6. 21:41
C++는 1983년 처음 등장한 이후 지속적으로 발전해왔습니다. 특히 C++11, C++14, C++17, C++20, C++23 등의 업데이트를 거치면서 현대적인 언어로 탈바꿈했는데요. 이를 가리켜 Modern C++이라고 합니다.그렇다면 Modern C++이란 무엇이며, 기존 C++과 무엇이 달라졌을까요? 그리고 개발자가 꼭 알아야 할 핵심 개념은 무엇일까요? 이번 포스팅에서 자세히 알아보겠습니다.1. Modern C++란?Modern C++은 C++11 이후의 표준을 포함한 새로운 스타일의 C++을 의미합니다. 특히 성능 최적화, 코드 안정성, 개발자 생산성을 높이기 위한 다양한 기능이 추가되었습니다.Modern C++의 주요 특징더 간결하고 안전한 코드메모리 관리 자동화 및 스마트 포인터 도입병렬..
-
C++ 네트워크 프로그래밍과 소켓 통신c++ 2025. 2. 4. 23:13
1. 네트워크 프로그래밍이란?네트워크 프로그래밍은 컴퓨터 간의 데이터 전송을 위해 프로그래밍하는 기술입니다. 이를 통해 클라이언트와 서버 간의 통신을 구현할 수 있습니다.(1) 소켓(Socket)이란?소켓은 네트워크를 통해 데이터를 송수신하기 위한 양 끝단의 인터페이스입니다.C++에서는 주로 BSD 소켓 API를 사용하여 네트워크 통신을 구현합니다.(2) 클라이언트-서버 모델서버(Server): 클라이언트의 요청을 기다리고 응답하는 역할클라이언트(Client): 서버에 요청을 보내고 응답을 받는 역할2. C++에서 소켓 프로그래밍 준비하기C++에서 소켓 프로그래밍을 위해 다음 헤더 파일을 포함해야 합니다.#include #include #include #include #include : 소켓 관련 함수 ..
-
C++ 멀티스레딩 프로그래밍과 동기화 기법c++ 2025. 2. 3. 21:10
1. 멀티스레딩(Multithreading)이란?멀티스레딩은 하나의 프로그램이 동시에 여러 작업을 수행할 수 있게 해주는 기술입니다. C++에서는 thread 라이브러리를 통해 멀티스레딩을 구현할 수 있습니다.(1) 스레드의 기본 개념스레드(Thread): 프로세스 내에서 실행되는 가장 작은 단위멀티스레딩을 통해 병렬 처리가 가능하여 성능을 향상시킬 수 있습니다.2. C++에서 스레드 사용하기(1) 기본 스레드 생성 및 실행#include #include using namespace std;void printMessage() { cout 출력 결과:메인 스레드에서 실행 중입니다.스레드에서 실행 중입니다.(2) 인자 전달 스레드스레드 함수에 인자를 전달할 수 있습니다.#include #include ..
-
C++ 표준 템플릿 라이브러리(STL)와 스마트 포인터c++ 2025. 2. 3. 21:07
1. 표준 템플릿 라이브러리(STL)란?**표준 템플릿 라이브러리(STL)**는 C++에서 제공하는 강력한 데이터 구조와 알고리즘의 집합입니다. STL은 크게 컨테이너(Containers), 반복자(Iterators), **알고리즘(Algorithms)**으로 구성됩니다.(1) STL의 주요 구성 요소컨테이너(Containers): 데이터를 저장하는 자료구조 (ex. vector, list, map, set)반복자(Iterators): 컨테이너의 원소를 순회하는 도구알고리즘(Algorithms): 정렬, 검색 등 다양한 알고리즘 제공2. 주요 STL 컨테이너 사용법(1) vector: 동적 배열vector는 크기가 가변적인 동적 배열로, 가장 널리 사용되는 컨테이너 중 하나입니다.#include #inc..