코딩 모닥불
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
  • 홈
  • 태그
  • 방명록
카테고리 없음

[C++] 예외 클래스( exception class )

예외 클래스( exception class )throw는 예외를 발생시키기 위해서 어떠한 타입의 값이라도 사용할 수 있고, 이런 타입의 종류에는 당연히 클래스도 포함됩니다. [C++] 예외 처리를 위한 throw와 try-catch의 동작 방식C++에서의 예외( exception ) 처리C++에서는 프로그램의 오류나 기대하지 못했던 상황이 발생한 경우, 이를 처리하기 위한 예외( exception )를 발생시키면, 프로그램이 자동으로, 이 예외를 처리할 수codingbonfire.tistory.com예외를 발생시킬 때 사용되는 클래스를 예외 클래스( exceptin class )라고 부르는데, 사실 이 예외 클래스와 일반 클래스의 차이점은 전혀 없습니다.단지, 예외가 발생된 이유를 설명하기 위한 값과 함..

2025. 4. 4.
카테고리 없음

[C++] 예외가 발생되지 않는 함수를 선언하는 noexcept

noexcept 지시자( specifier )noexcept는 함수 이름의 끝에 붙는 지시자로, 이 지시자가 붙은 함수는 예외( exception )를 발생시키지 않는다는 것을 명시합니다. 하지만, noexcept 함수 실행 시, 컴파일러에 의해 예외가 발생하는 것이 방지되거나 해서, 프로그램이 예외로부터 안전해지는 것을 말하는 것이 아니라, 이 함수에서는 예외가 발생하지 않으니까, 예외에 민감한 문맥에서도 안심하고 사용할 수 있을 뿐만 아니라, 컴파일러는 이 함수를 최적화해서 성능을 향상할 수 있다고 얘기를 하는 것입니다. 즉, 이 noexcept 지시자를 사용한다는 것은, 함수와 이 함수를 사용한 프로그램 간의 일종의 계약이라고 봐야 합니다. 그런데 만약, 이렇게 말해온 함수에서 예외가 외부로 발생하..

2025. 4. 3.
카테고리 없음

[C++] 독점적으로 자원을 관리하는 std::unique_ptr 객체

std::unique_ptrstd::unique_ptr은, C++ 11에, 할당된 메모리를 편리하게 관리할 목적으로 도입된 스마트 포인터( smart pointer ) 클래스입니다. 이 unique_ptr 객체가 하는 일은, 메모리가 할당된 객체의 주소를 보관했다가, 이 스마트 포인터가 파괴될 때, 이 주소를 사용해서, 할당된 객체를 파괴하고, 이때 사용되었던 메모리를 시스템에 반환하는 것입니다. 이 클래스를 사용하기 위해선 먼저 다음의 헤더 파일을 포함해야 합니다.#include 아래는 unique_ptr 객체를 선언하는 방법을 보여줍니다.#include #include using namespace std;#define SIZE 100// 데이터를 할당하는 클래스class ResourceObj{..

2025. 3. 29.
카테고리 없음

[C++] 내부 삽입을 통해 원소를 추가할 수 있는 std::emplace

std::emplace 함수std::emplace 함수는 C++ 표준 라이브러리의 컨테이너들( vector, list, set, map, deque 등 )에 새로운 원소를 삽입하는 함수입니다. 이와 비슷한 함수로 std::vector의 emplace_back, std::list의 emplace_front, emplace_back, std::map의 emplace_hint 등이 있지만, 이 함수들은 특별한 경우에 최적화된 기능을 구현하기 위해 필요한 인자를 더 받을 뿐, emplace 함수와 동작하는 원리는 같습니다. 그리고, 원시 데이터( int, float 등 )를 추가하는 경우엔 insert와 emplace 함수와의 차이점은 없습니다. 하지만, 클래스 타입의 데이터를 다루는 경우엔 사용하는 방법에 따..

2025. 3. 27.
카테고리 없음

[C++] 객체의 모든 원소를 순환하는 범위 기반 for 구문

범위 기반 for ( range-based for )범위 기반 for 루프는, C++11부터 도입된, 배열이나 컨테이너 같이 데이터의 연속을 나타내는 객체의 모든 멤버를 순환하는 구문입니다. 선언 방식은 다음과 같습니다.for ( 데이터_타입 변수명 : 배열 or 컨테이너 등 순환가능한 객체 ){}범위 기반 for 구문의 대상은 배열이나 컨테이너뿐 아니라, 데이터가 연속되어 있는 순환가능한 객체라면 대상이 될 수 있습니다. 예를 들어, std::string 문자열 안에 있는 모든 문자를 출력하는데도 이 구문을 사용할 수 있습니다. 그리고, 위에서 말하는 "데이터_타입"은 이러한 순환가능한 객체가 가진 멤버의 데이터 타입을 말합니다. 이 구문의 장점은 기존의 for 구문보다 알아보기 쉽고 짧은 코드를 만들..

2025. 3. 11.
카테고리 없음

[C++] 배열, 컨테이너, 사용자 정의 데이터를 정렬하기 위한 std::sort

std::sort의 정의와 기초 사용법std::sort는 지정된 범위에 있는 데이터 요소를 기본적인 오름차순 또는 지정한 정렬 기준에 따라 정렬하는 함수입니다.이 함수를 사용하기 위해서는 우선 다음과 같은 헤더파일을 포함해야 합니다.#include 이 함수의 정의는 다음과 같습니다.templatevoid sort( RandomAccessIterator first, RandomAccessIterator last);위의 첫 번째 인자 first는 정렬할 범위의 첫 번째 요소의 주소를 지정하는 임의 액세스 Iterator입니다. 두 번째 인자 last는 정렬할 범위의 마지막 요소 다음 위치의 주소를 지정하는 임의 액세스 Iterator입니다. 정의에 사용된 단어를 보면 복잡한 것 같지만, 실제로 사..

2025. 3. 10.
카테고리 없음

[C++] 파생 클래스 객체에 발생하는 객체 잘림( object slicing )

객체 잘림( object slicing )클래스의 상속 관계를 이용할 때는, 기본 클래스의 포인터 타입( pointer )이나 참조 타입( reference )을 사용하여 접근해야 한다는 것을 알고 있을 것입니다. 다음은 기본 클래스 CBase에서 상속받은 클래스 CDerived의 객체에 접근하기 위해서, 기본 클래스의 참조 타입을 이용하는 것을 보여줍니다.#include #include using std::string_view;class CBase{ // 기본 클래스 int m_id;public: CBase( int id) : m_id( id){} virtual string_view getName(){ return "Base"; } // 가상 함수 int getID() const ..

2025. 1. 19.
카테고리 없음

[C++] 함수에 std::vector 전달하기

std::vector를 매개변수로 하는 함수std::vector는 다양한 타입의 데이터를 담을 수 있는 컨테이너입니다.이 컨테이너는 사용자가 원한다면, 매우 많은 원소를 저장할 수 있기 때문에, 함수에서 사용하려면 값에 의한 전달( call by value )이 아니라 참조에 의한 전달( call by reference ) 방식을 사용해야 합니다.#include #include // vector를 매개변수로 하는 함수void printData( const std::vector& vec){ for( auto i : vec){ std::cout vec{ 1, 2, 3, 4, 5 }; printData( vec );}▼출력1 2 3 4 5그런데, 다양한 타입을 저장할 수 있는 ..

2025. 1. 18.
  • «
  • 1
  • »

전체 카테고리

  • 분류 전체보기

블로그 인기글

태그

  • #깊이 우선 탐색
  • #전방 선언
  • #이진 탐색
  • #Lamda
  • #std::vector
  • #std::string_view
  • #예외 처리
  • #복사 생성자
  • #using
  • #decltype
  • #const
  • #동적 계획법
  • #inline
  • #std::queue
  • #std::stack
  • #소멸자
  • #함수 객체
  • #Enum
  • #범위 기반 for
  • #auto
  • #std::sort
  • #static_cast
  • #헤더 가드
  • #전처리기
  • #초기화
  • #상수 표현식
  • #std::unique_ptr
  • #constexpr
  • #포인터
  • #namespace
MORE
애드센스 광고 영역
Powered by Privatenote Copyright © 코딩 모닥불 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바