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

[C++] 자원을 공유하는 std::shared_ptr 객체

std::shared_ptrstd::shared_ptr은 할당된 메모리를 자동으로 관리할 목적으로 C++ 11에 도입된 유틸리티 클래스입니다. 이 클래스를 사용하기 위해선 다음의 헤더 파일을 포함해야 합니다.#include 다음은 shared_ptr의 기본 사용법입니다.#include #include #define SIZE 100class ResourceObj{ // 자원 클래스 int* m_pData;public: ResourceObj(){ m_pData = new int[SIZE]; std::cout ptr { new ResourceObj() }; // shared_ptr}▼출력Resource CreatedResource Destory위의 shared_pt..

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

[C++] 생성자와 소멸자에서의 예외( exception ) 처리

생성자( constructor )에서의 예외 처리생성자를 작성하다 보면, 의외로 문제가 발생할 여지가 꽤 있다는 것을 깨닫게 됩니다. 맨 먼저 떠오르는 경우는, 메모리를 대규모로 할당할 때, 실패하는 경우를 들 수 있습니다. 또 다른 경우로는, 클래스 객체가 지속적으로 사용하게 될 변수의 값을 채워 넣기 위해, 생성자에서 호출하는 계산 함수의 오류를 들 수 있습니다.하지만, 이런 문제들은 다른 곳에서도 얼마든지 일어날 수 있는 경우들입니다. 그러나, 일반 함수와 달리, 생성자는 성공 여부를 반환할 수 없기 때문에, 이런 경우를 자연스럽게 처리할 수 없습니다. 그래서 이를 우회하는 방식으로, 실패했다는 정보를 객체 안에 저장해 두거나, 객체를 사용 전 검산을 통해서 제대로 된 결과를 갖고 있다는 것을 확인..

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

[C++] 불필요한 중간 단계를 건너뛰기 위한 복사 생략( copy elision )

불필요한 생성자의 호출클래스의 객체를 생성하고 초기화하기 위해, 컴파일러는 이 클래스의 생성자를 호출합니다. 다음은 CSomething 클래스의 객체가 생성될 때, 어떤 생성자가 호출되는지를 보여줍니다.class CSomething{ int m_nValue;public: CSomething() : m_nValue(0) { cout ▼출력parameterized constructor called.copy constructor called.위의 st 객체는 값 10으로 초기화되는데, 이때 매개 변수 생성자( parameterized constructor )가 호출됩니다.그리고, 이 st 객체로부터 obj 객체를 초기화할 때, CSomething 클래스의 복사 생성자( copy cons..

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

[C++] 기존의 객체를 복사할 때 호출되는 복사 생성자( copy constructor )

복사 생성자( copy constructor )복사 생성자( copy constructor )란 같은 타입의 객체를 인자로 받아 그 객체의 데이터를 가지고 초기화를 수행하는 생성자를 말합니다. 다음은 CSomething 클래스의 복사 생성자가 호출되는 예를 보여줍니다.class CSomething{ int m_nValue;public: CSomething() : m_nValue(0) { cout 위에서 CSomething 타입의 other 객체로부터, 같은 타입의 obj 객체를 초기화할 때, 호출되는 생성자를 복사 생성자라고 하며, 이 생성자는 다음과 같은 형태로 정의됩니다.CSomething( const CSomething& other ){ // do something...}여기..

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

[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.
  • «
  • 1
  • »

전체 카테고리

  • 분류 전체보기

블로그 인기글

태그

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

티스토리툴바