본문 바로가기

Language25

enable_shared_from_this의 사용법 최근 듣고 있는 강의에서 자신의 shared_ptr을 추출하기 위한 용도로 클래스에 enable_shared_from_this를 선언하는 예시를 보게 되었다. 해당 클래스의 shared_ptr 인스턴스를 안전하게 생성할 수 있는 방법이다. 해당 구문을 통해 상속받아야하며 상속 시 shared_from_this 멤버함수를 통해 인스턴스를 생성할 수 있다. 해당 문법에 대한 레퍼런스는 다음과 같다. https://en.cppreference.com/w/cpp/memory/enable_shared_from_this std::enable_shared_from_this - cppreference.com template class enable_shared_from_this; (since C++1.. 2022. 1. 4.
lvalue와 rvalue + 우측값 참조법 * lvalue와 rvalue란? C++ 내에서 모든 식들은 카테고리라는 부가적인 정보를 포함하고 있다. l-value와 r-value가 이에 해당되는데, lvalue는 읽고 대입할 수 있는 값, 식(expression)에서 좌측에 존재하기에 좌측 값(left value)라 불린다. 이름을 가진 대부분의 값들은 lvalue에 포함된다. 이름을 가졌다는 것은 메모리를 가지고 있다는 뜻이고 이는 대입할 수 있는 주소값을 가지고 있다는 뜻이기 때문이다. rvalue는 읽기만 할 수 있는 값, 식(expression)의 우측에 존재하기에 우측 값이라 불린다. lvalue와 반대로 주소값을 가지지 않고 명확한 실체가 존재하지 않는 값이라 할 수 있다. 대표적으로 상수 혹은 연산자, 람다 등이 포함된다. 실체를 가.. 2021. 12. 21.
스마트 포인터 (Smart Pointer) 스마트포인터는 포인터처럼 활용하는 클래스 템플릿으로 메모리를 자동으로 해제해준다. 일반적으로 동적할당한 메모리는 해제 코드를 작성하지 않을 경우 Memory Leak이 발생하는데, 스마트 포인터는 이를 방지해준다. 이전 C++( 내가 처음으로 접했던 C++ 전공책) 에서는 스마트포인터가 auto_ptr로써 소개되었지만 C++11 이후로는 auto_ptr이 삭제되고, unique_ptr, shared_ptr, weak_ptr 세 가지로 존재한다. * unique_ptr 기본 포인터로 한 명의 소유자만 허용하는 스마트 포인터이다. 새 소유자로 이동할 수 있지만 내부적으로 복사 연산자를 막아놓았기 때문에 move 연산만 가능하다. *shared_ptr 레퍼런스 카운팅을 지원하는 스마트 포인터이다. 레퍼런스 카.. 2021. 12. 17.
[자료형] char 자료형으로 for 반복문을 실행하면 어떻게 될까? 일반적인 for문의 사용은 다음과 같이 int형 변수를 초기화하여 사용한다. int main() { for (int i = 0; i < 250; i++) { cout 2021. 10. 26.