본문 바로가기

전체 보기196

Modern C++ : 연산자 오버로딩 (Operator Overloading) (98, 11, 20) 연산자 오버로딩 (Operator Overloading) 개요연산자 오버로딩(Operator Overloading)은 C++의 강력한 기능 중 하나로, 사용자가 직접 정의한 클래스 타입에 +, -, *, ==와 같은 내장 연산자를 사용할 수 있도록 재정의하는 것을 의미합니다. 이를 통해 사용자 정의 타입도 기본 데이터 타입처럼 자연스럽고 직관적인 문법으로 다룰 수 있어 코드의 가독성과 사용 편의성이 크게 향상됩니다.예를 들어, 두 Matrix 객체를 더할 때 m1.add(m2) 대신 m1 + m2와 같이 간결하게 표현할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: 연산자 오버로딩의 기본 개념이 도입되었습니다. 대부분의 연산자를 오버로딩할 수 있는 기능이 이때부터 제공되었습니다.C++11.. 2025. 9. 21.
Modern C++ : 클래스 템플릿(Class Template) (98) 클래스 템플릿 (Class Template) 개요클래스 템플릿(Class Template)은 구체적인 데이터 타입을 명시하지 않고, 일반화된(generic) 형태로 클래스를 정의하는 방법입니다. 이를 통해 다양한 자료형에 대해 동일한 동작을 하는 클래스를 한 번만 정의하여 코드의 재사용성을 크게 높일 수 있습니다. 컴파일러는 템플릿에 명시된 타입(예: int, float, double 등)에 맞춰 실제 클래스를 생성합니다. C++ 버전별 주요 키워드 도입 시기C++98: template, typename 키워드를 사용한 클래스 템플릿 기본 기능이 도입되었습니다. 내용 설명클래스 템플릿은 template 또는 template 키워드로 선언을 시작합니다. 여기서 T는 타입 매개변수(type paramet.. 2025. 9. 20.
꿈 속의 그대에게, 1906년 석유, 1907년 전선 "1906년 석유가 1907년 전선보다 먼저였다..." 여러 서사이후 꿈속의 그대는 억울한 듯 자랑스러운듯 강조하며 마지막으로 한 말.그 말로인해 블로그를 작성합니다. 시대별 지배층 혹은 관리자는 인류가 다시 성숙한 사회를 구성할 수 있을 때까지 잉여물의 관리 및 분배를 담당하는 역할을 수행해야합니다. 그리고 관리자들의 어리석음 마저도 인내의 시간에 들어갔다고 봅니다. 인류 권력의 계보와 민주주의 주도권 사회로의 흐름1. 초기 공동체 시대: 부족장과 샤먼의 권력인류 초기 공동체에서 권력은 부족장(Chief)과 샤먼(주술사)에게 있었습니다.이 시기 민간인은 비교적 평등한 공동체 일원으로 살았으나, 생존이 중심이었고 강자나 주술적 권위를 지닌 이들이 영향력을 행사했습니다.권력 기반: 혈연, 무력, 주술민간인.. 2025. 9. 19.
Modern C++ : 다형성(Polymorphism) (98, 11) 다형성 (Polymorphism) 개요다형성(Polymorphism)은 객체 지향 프로그래밍의 핵심 원칙 중 하나로, '여러 형태를 가질 수 있는 능력'을 의미합니다. C++에서는 주로 부모 클래스의 포인터나 참조를 통해 자식 클래스의 객체를 다루면서, 동일한 함수 호출이 객체의 실제 타입에 따라 다른 동작을 하도록 만드는 가상 함수(Virtual Function) 메커니즘으로 구현됩니다.이를 통해 코드의 유연성과 확장성을 높일 수 있으며, 다양한 객체들을 공통된 인터페이스로 관리할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98 이전: virtual 키워드를 통해 다형성의 기본 개념이 지원되었습니다.C++11: 다형성 및 클래스 설계를 더 명확하고 안전하게 만들어주는 여러 키워드가 도입되었.. 2025. 9. 19.
Modern C++ : 상속(Inheritance) (98, 11) 상속 (Inheritance) 개요상속(Inheritance)은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 기존 클래스(기반 클래스 또는 부모 클래스)의 멤버(변수, 메서드)를 새로운 클래스(파생 클래스 또는 자식 클래스)가 물려받아 사용할 수 있게 하는 기능입니다. 이를 통해 코드 재사용성을 높이고, 클래스 간의 계층 구조를 형성하여 프로그램을 더 체계적으로 구성할 수 있습니다.C++에서는 한 클래스가 다른 클래스로부터 상속받을 때, 파생 클래스는 기반 클래스의 public 및 protected 멤버에 접근할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: class, public, protected, private, virtual, 생성자 초기화 목록 순서는 멤버 변수 선언 순서와 .. 2025. 9. 18.
Modern C++ : 클래스(Class) (98, 11, 17) 클래스 (Class) 개요C++에서 class는 사용자 정의 타입을 만드는 핵심적인 기능입니다. 클래스는 데이터(멤버 변수)와 해당 데이터를 처리하는 함수(멤버 함수)를 하나로 묶어 관리하며, 객체 지향 프로그래밍(OOP)의 기본이 됩니다. 클래스를 통해 데이터 캡슐화, 상속, 다형성 등 OOP의 주요 특징을 구현할 수 있습니다.C++ 버전별 주요 키워드 도입 시기C++98: class 키워드 자체는 C++의 초기 버전부터 존재했습니다.C++11: default, delete 키워드가 도입되어 컴파일러가 생성하는 기본 멤버 함수(생성자, 소멸자 등)를 명시적으로 사용하거나 삭제할 수 있게 되었습니다.C++17: std::string_view가 도입되어, 문자열을 복사하지 않고도 읽기 전용으로 안전하고 효.. 2025. 9. 17.
Modern C++ : 유틸리티 함수 활용 (11, 17) 모던 C++ 유틸리티 함수 활용 개요utils.h 헤더 파일에 정의된 다양한 유틸리티 함수를 활용하여 C++11, C++17, C++20 등 모던 C++의 주요 표준 기능들을 사용하는 방법을 알아봅니다. 템플릿, constexpr, std::string_view, 구조적 바인딩(structured bindings) 등 코드의 재사용성과 가독성, 성능을 높여주는 기능들을 실제 예제를 통해 학습합니다. C++ 버전별 주요 키워드 도입 시기C++11constexpr: 컴파일 타임에 값을 계산할 수 있는 상수 표현식입니다.std::array: 정적 크기의 배열을 위한 컨테이너입니다.std::vector, std::map: 개선된 표준 라이브러리 컨테이너입니다.범위 기반 for 루프 (Range-based for.. 2025. 9. 15.
Modern C++ : 직접 구현한 표준 알고리즘, equal, fill_n, iota, copy, accumulate (98, 11) 직접 구현한 표준 알고리즘: equal, fill_n, iota, copy, accumulate 개요C++ 표준 라이브러리의 헤더에 포함된 기본 알고리즘들을 직접 구현해보는 예제입니다. 반복자(Iterator)를 사용하여 컨테이너의 원소를 순회하고 조작하는 방법을 이해하는 데 도움이 됩니다. 이 문서에서는 equal, fill_n, iota, copy, accumulate 함수의 구현과 사용법을 다룹니다. C++ 버전별 주요 키워드 도입 시기C++98: std::vector, 반복자(iterator) 개념, 헤더의 기본 함수들C++11: cstdint (예: std::int32_t), std::boolalpha 내용 설명mystd 네임스페이스 안에 표준 라이브러리 함수와 유사하게 동작하는 함수들을 구.. 2025. 9. 14.
Modern C++ : std::function (11) std::function - 호출 가능한 모든 것을 위한 래퍼 개요std::function은 C++11부터 도입된 표준 라이브러리의 기능으로, 함수 포인터, 함수 객체(Functor), 람다 표현식 등 호출 가능한(callable) 모든 것을 저장하고, 감싸고, 호출할 수 있는 다형성 래퍼(polymorphic wrapper)입니다. 이를 통해 다양한 형태의 호출 가능한 객체를 동일한 인터페이스로 처리할 수 있어 코드의 유연성과 재사용성을 크게 향상시킵니다. C++ 버전별 주요 키워드 도입 시기C++11 : std::function이 처음 도입되었습니다. 내용 설명std::function은 템플릿 클래스로, std::function와 같은 형태로 선언합니다.ReturnType: 함수의 반환 타입ArgTy.. 2025. 9. 13.