본문 바로가기

C++22

C++ 예외처리 예외(exception)란? 예외(exception)란 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 오류가 발생하여, 실행되고 있던 프로그램이 중지되는 것을 의미합니다. 예외 처리(exception handling)는 이러한 예외 상황을 처리할 수 있도록 코드의 흐름을 바꾸는 행위를 의미합니다. C++은 언어 차원에서 예외 처리 문법을 제공하여, 예외 처리하는 방식을 확장하고 관리하기 쉽도록 해줍니다. try, throw, catch 문 C++에서는 예외 처리의 구현을 위해서 try, throw, catch 문을 제공합니다. 1. try 문 : 예외가 발생할 가능성이 있는 코드 블록 2. throw 문 : try 문에서 발생한 오류에 대한 정보를 전달 3. catch 절 : 발생한 예외에 대해 예외 핸.. 2020. 7. 6.
C++ 입력 & 출력 C++ 입출력 C++은 C언어와 마찬가지로 입출력에 관한 기능을 언어에서 기본적으로 제공하지 않습니다. 그 이유는 컴파일러를 만들 때 입출력 기능을 해당 하드웨어에 가장 적합한 형태로 만들 수 있도록 컴파일러 개발자에게 권한을 주기 위해서입니다. 하지만 대부분의 C++ 컴파일러는 iostream과 fstream 헤더 파일에 정의되어 있는 클래스 라이브러리를 제공합니다. iostream과 fstream 클래스 라이브러리의 중요 개념 중 하나가 바로 스트림(stream)입니다. 스트림(stream) C++ 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룹니다. 스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미합니다. 즉, .. 2020. 7. 6.
C++ STL알고리즘 함수 객체(function object) STL 알고리즘에 데이터를 전달하기 위해서는 다음과 같은 방법을 사용할 수 있습니다. 1. 함수 포인터 2. 함수 객체 3. 람다 표현식 많은 STL 알고리즘이 데이터를 처리하기 위해 매개변수로 함수 객체(function object)를 받아들입니다. 펑크터(functor)라고도 불리는 함수 객체는 호출 연산자(())와 함께 사용할 수 있는 객체를 의미합니다. 이러한 함수 객체는 우선 타입을 선언하고, 해당 클래스에서 호출 연산자(())를 오버로딩하여 구현하게 됩니다. 함수 객체의 장점 직접적인 함수 호출과 비교하여 함수 객체를 사용하면 다음과 같은 장점을 가집니다. 1. 함수 객체는 상태(state)를 포함할 수 있습니다. 2. 함수 객체는 타입이므로, 템플릿 .. 2020. 7. 5.
C++ STL컨테이너 컨테이너(container) STL에서 컨테이너(container)는 같은 타입의 여러 객체를 저장하는 일종의 집합이라 할 수 있습니다. 컨테이너는 클래스 템플릿으로, 컨테이너 변수를 선언할 때 컨테이너에 포함할 요소의 타입을 명시할 수 있습니다. 컨테이너에는 복사 생성과 대입을 할 수 있는 타입의 객체만을 저장할 수 있습니다. 또한, 컨테이너는 요소의 추가 및 제거를 포함한 다양한 작업을 도와주는 여러 멤버 함수를 포함하고 있습니다. 컨테이너의 각 요소에는 반복자를 사용하여 접근할 수 있습니다. 컨테이너의 종류 STL에서 컨테이너는 자료를 저장하는 방식과 관리하는 방식에 따라 여러 가지 형태로 나뉠 수 있습니다. STL 컨테이너는 크게 다음과 같이 세 가지 유형으로 구분됩니다. 1. 시퀀스 컨테이너(s.. 2020. 7. 5.
C++ STL반복자 STL(Standard Template Library) C++이 가지는 프로그래밍 언어로서의 특징 중 하나로 일반화 프로그래밍(generic programming)을 들 수 있습니다. 이러한 일반화 프로그래밍은 데이터를 중시하는 객체 지향 프로그래밍과는 달리 프로그램의 알고리즘에 그 중점을 둡니다. C++ 표준 템플릿 라이브러리인 STL도 이러한 일반화 프로그래밍 패러다임의 한 축을 담당하고 있습니다. STL은 알고리즘을 일반화한 표현을 제공하여, 데이터의 추상화와 코드를 재활용할 수 있게 합니다. STL은 1994년 휴렛팩커드연구소의 알렉스 스테파노프(Alex Sepanov)와 멩 리(Meng Lee)가 처음으로 그 구현을 발표합니다. 그 후 STL은 ISO/ANSI C++ 표준 위원회에 의해 C++ .. 2020. 7. 5.
C++ 템플릿 일반화 프로그래밍(generic programming) C++이 가지는 프로그래밍 언어로서의 특징 중 하나로 일반화 프로그래밍(generic programming)을 들 수 있습니다. 일반화 프로그래밍은 데이터를 중시하는 객체 지향 프로그래밍과는 달리 프로그램의 알고리즘에 그 중점을 둡니다. 이러한 일반화 프로그래밍을 지원하는 C++의 대표적인 기능 중 하나가 바로 템플릿(template)입니다. 템플릿(template) 템플릿(template)이란 매개변수의 타입에 따라 함수나 클래스를 생성하는 메커니즘을 의미합니다. 템플릿은 타입이 매개변수에 의해 표현되므로, 매개변수화 타입(parameterized type)이라고도 불립니다. 템플릿을 사용하면 타입마다 별도의 함수나 클래스를 만들지 않고, 여러 타.. 2020. 7. 5.