본문 바로가기

전체 보기220

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.
Modern C++ : std::min, max, equal, any_of, all_of, none_of (98, 11, 17) std::min, max, equal, any, all, none 개요C++ 표준 라이브러리는 컨테이너의 원소를 검색하고 비교하는 데 유용한 다양한 알고리즘을 제공합니다. 이 문서에서는 특정 조건을 만족하는 원소를 찾거나, 두 범위를 비교하는 데 사용되는 std::min, std::max, std::equal, std::any_of, std::all_of, std::none_of 함수에 대해 설명합니다. C++ 버전별 주요 키워드 도입 시기C++98: std::min, std::max, std::min_element, std::max_element, std::equalC++11: std::any_of, std::all_of, std::none_ofC++17: 병렬 실행 정책(std::execution)을.. 2025. 9. 12.
Modern C++ : std::remove, std::sort, std::replace (98, 20) std::remove, std::sort, std::replace 개요C++ 표준 라이브러리에서 제공하는 std::remove, std::sort, std::replace 계열 함수들은 컨테이너의 원소를 정렬하거나, 특정 조건에 맞는 원소를 바꾸거나, 제거하는 데 사용되는 강력한 도구입니다. 이 함수들을 사용하면 복잡한 반복문 없이도 간결하고 효율적인 코드를 작성할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: std::sort, std::replace, std::replace_if, std::remove, std::remove_ifC++20: std::erase, std::erase_if (컨테이너용 비멤버 함수) 내용 설명std::sort: 지정된 범위의 원소들을 오름차순 또는 사용자.. 2025. 9. 11.
Modern C++ : std::transform & std::accumulate (98) std::transform & std::accumulate 개요std::transform과 std::accumulate는 C++ 표준 라이브러리의 및 헤더에 포함된 강력한 함수입니다. std::transform은 범위 내의 각 원소에 지정된 연산을 적용하고 그 결과를 다른 범위에 저장하는 데 사용됩니다. std::accumulate는 범위 내의 모든 원소를 합산하여 단일 값을 계산하는 데 사용됩니다. 이 함수들은 반복문을 직접 작성하는 것보다 코드를 더 간결하고 가독성 높게 만들어 줍니다. C++ 버전별 주요 키워드 도입 시기C++98: std::transform, std::accumulate가 도입되었습니다. 내용 설명std::transformstd::transform 함수는 두 가지 형태로 오버로.. 2025. 9. 10.