쉐어드 포인터
2020. 11. 14. 04:01
C++
1. 쉐어드 포인터는 복사 연산, 이동 연산, 관련 생성자 모두를 지원한다. 2. 레퍼런스 카운팅을 통해서 객체의 소멸을 관리한다는 점에서, ComPtr과 비슷하게 보일 수 있으나, 내부적으로는 전혀 그렇지 않다. 가령 ComPtr를 통해서 ID3D11Device 객체를 ID3D11Device3 에 할당한다면, invasive 레퍼런스 카운팅에 의해서 객체의 복사, 이동이 자유롭게 일어나지만, shared_ptr은 COM 객체에 대해서 non-invasive이기 때문에, 불가능하다. 3. 유니크 포인터와 마찬가지로 make_shared 헬퍼 함수를 통해서 객체를 생성하는 것이 좋다. 4. 레퍼런스 카운팅이 0이 되는 것은 의미가 없다. #include "Precompiled.h" #include usin..
유니크 포인터
2020. 11. 13. 22:47
C++
1. 원시 포인터를 대체할 수 있는 좋은 수단은 유니크 포인터이다. 2. 유니크 포인터는 오토 포인터와 달리, 복사 생성자, 복사 할당 연산, 이동 생성자, 이동 할당을 지원하지 않기 때문에, 오류 발생 위험이 훨씬 적다. 3. 오토 포인터 대신 유니크 포인터를 사용한다. 4. 값을 할당할때는 make_unique 메소드를 사용하는 것이 오류 위험이 가장 적고, 퍼펙트 포워딩을 지원한다. #include using namespace std; auto main() -> int { //auto sp = unique_ptr{ nullptr }; //auto sp = unique_ptr{ new int {123} }; auto sp = make_unique(123); //추천하는 할당벙 } 5. 명시적으로 생성..
Assertion
2020. 11. 13. 06:18
C++
1. 어서션은 함수이거나 일반적으로 매크로를 통해서 구현되었다. 2. 어서션은 런타임을 통해서도 코드가 유효한지 확인할 수 있지만, 컴파일 타임에서도 검증하는 것을 가능케한다. 3. 애플리케이션을 실행하지 않고도 프로그래머가 세운 가정이 유효한지 확인할 수 있다. 4. 런타임 어서션은 조건부로 작동하기 때문에, 릴리즈로 빌드될 때, 사라진다. 따라서 매우 유용하다. 5. 표준 C++라이브러리 는 표준 C 라이브러리 에서 Assert를 상속받았다. #include //#include /* 실행시, 디버그 에러가 출력되며 메시지 박스가 튀어나온다. 소스파일 이름과, 에러코드, 라인넘버까지 출력된다. 자동적으로 중단점이 발동된다. 또한 콘솔창에서도 같은 정보를 출력한다. */ auto main() ->int{..