본문 바로가기

전체 글49

Variant 초기화의 중요성 bad_variant_access Std::Variant는 C++ 17에서 지원하는 공용체이다. 공용체란 한 인스턴스에 다양한 타입의 값을 담을 수 있는 구조체를 의미한다. 공용체라면 가장 쉽게 접할 수 있는게 명시적인 Union 일텐데, 현재 Std::Variant는 Value와 함께 저장된 값의 유형을 식별하는 판별자를 관리하기 때문에 공용체를 구현하는데 보다 안정적인 방법으로 선호되고 있다. (기존의 Union의 경우 타입을 판별하지 않기때문에 논리 오류로 이어질 수 있다는 단점이 존재한다.) * Variant의 이용방법은 다음과 같다. https://en.cppreference.com/w/cpp/utility/variant std::variant - cppreference.com template class variant; (sin.. 2022. 6. 3.
상수 멤버함수의 설계 방법 멤버 함수에 붙는 const 키워드의 역할은 해당 멤버 함수가 상수 객체 대해 호출될 함수라는 사실을 의미한다. 이러한 함수는 먼저 클래스의 인터페이스를 이해하기 좋게하기 위해 사용되며, 두 번째로 이 키워드를 통해 상수 객체를 사용할 수 있게 하기위함이다. cosnt 키워드가 있고 없고의 차이만 있는 멤버 함수들은 오버로딩이 가능하다. 오버로드를해서 각 버전마다 반환 타입을 다르게 가져간다면 상수 객체와 비상수 객체의 쓰임새를 다르게 가져갈 수 있다. class TextBlock { public: const char& operator[](std::size_t position) const { return text[position]; } char& operator (std::size_t poisition).. 2022. 3. 2.
부동소수점과 오차 일반적으로 컴퓨터는 10진수를 2진수로 변환하여 표기한다.하지만 컴퓨터 세계에서는 소수점을 상요할 수 없다. 대신 지수를 이용하여 이를 표기한다. 이러한 표현방식을 부동소수점을 이용한 실수표기라 한다. 이번 포스팅에서 부동소수점의 표기방법과 이로 인해 발생하는 오차에 대해 정리한다. * 부동소수점 부동소수점수의 표기는 다음과 같은 구조로 이루어져 있다. 부호부 지수부 가수부 부호부는 일반적인 컴퓨터상의 부호 (음수,양수)를 표기하기 위한 비트부호와 같은 역할을 하는 1바이트의 영역이다. 그럼 지수부와 가수부는 어떤 영역일까? 실질적인 부동소수점 표기방법을 먼저 알아보도록한다. 실수를 부동소수점수로 표현하는 단계는 다음과 같다. 1. 실수를 정수부와 실수부로 나누어, 2진수로 변환한다. ex) 10.625.. 2022. 2. 4.
참조 전달 문법 std::move, std::forward https://dev-record.tistory.com/62?category=956403 이동생성자와 보편참조법(universal ref) https://dev-record.tistory.com/56?category=956403 lvalue와 rvalue + 우측값 참조법 * lvalue와 rvalue란? C++ 내에서 모든 식들은 카테고리라는 부가적인 정보를 포함하고 있다. l-value와 r-value가 이에 해.. dev-record.tistory.com 지난 포스팅에서 rvalue와 보편축약 등에 대해 정리해보았다. 이번 포스팅은 이를 응용한 forward 함수의 사용에 대해 알아본다. 지금까지 정리한 내용은 다음과 같다. c++에서 참조는 &와 &&으로 표현된다. &는 lvalue 참조를 의미하.. 2022. 1. 13.