목록2017/12 (4)
갱스
Effective C# 3판의 목차이다. 책을 읽고나서 목차만 수시로 봐줘도 큰 도움이 될 것 같다 CHAPTER 1 C# 언어 요소 아이템 1: 지역변수를 선언할 때에는 var를 사용하는 것이 낫다 아이템 2: const보다는 readonly가 좋다 아이템 3: 캐스트보다는 is, as가 좋다 아이템 4: string.Format()을 보간 문자열로 대체하라 아이템 5: 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 아이템 6: nameof() 연산자를 적극 활용하라 아이템 7: 델리게이트를 이용하여 콜백을 표현하라 아이템 8: 이벤트 호출 시에는 null 조건 연산자를 사용하라 아이템 9: 박싱과 언박싱을 최소화하라 아이템 10: 베이스 클래스가 업그레이드된 경우에만 ..
shared_ptr로 관리되는 객체를 생성하는 방법은 두가지가 있다1. shared_ptr(new Object)2. make_shared() 이 두가지 방식에 차이점이 있을까? 있다면 어느 방식이 더 좋을까?아래 링크는 이 의문에 대한 좋은 답변이다https://stackoverflow.com/questions/20895648/difference-in-make-shared-and-normal-shared-ptr-in-c 답변을 간략히 정리해보았다 1. 메모리할당 (heap allocation) 횟수가 다르다shared_ptr(new Object)를 쓰면 Object 객체를 생성할 때 한번, reference count 관리를 위한 control block을 생성할 때 한번. 총 두번 메모리 할당이 발생한..
우선 rvalue와 lvalue를 구별할 수 있어야 한다. 아래 포스트에 잘 설명되어있다.http://itguru.tistory.com/189 move 개념이 등장하기 전까진 move와 copy 모두 copy방식으로 구현해왔었다. 하지만 move와 copy를 구별해서 코드를 짜면 불필요한 메모리할당과 복사를 피할 수 있다. 굳이 copy를 하지 않고 move만으로 기능구현이 가능하다면 move를 하도록 하자. 특히 라이브러리나 엔진같은 기반코드를 작성하는 프로그래머라면, 본인이 만들 클래스가 이동될 것인 지 복사될 것인 지를 잘 디자인해야 한다. 만약 이동만으로 충분하다면 복사생성자와 복사대입연산자를 지워버리고(= delete) 이동생성자와 이동대입연산자만 제공하는 것을 고려해본다. 아래 코드는 move..
C++ 프로그램에 Python embedding을 해보았다. Python을 설치하면 생기는 헤더/라이브러리 파일만을 이용해 개발할 수도 있지만 C++가 아닌 C로 개발해야 해서 생산성이 떨어진다boost::python은 그것을 클래스로 잘 래핑해놓은 것이다. 아래 기록은 삽질해보면서 기록한 거라 정리된 상태가 아니다 boost 다운받고 압축 푼다. boost 경로에서cmd> boostrap.bat project-config.jam 파일이 생겼을 것. 이 파일을 열고using python : 3.6 : C:\Users\pknam\Anaconda3 : : : 64 ;라인을 추가한다 다시 boost 경로에서cmd> b2 -j4 --toolset=msvc-14.0 --build-type=complete arch..