Auto(4)
-
[effective modern c++] 항목 6 : auto가 원치 않은 형식으로 연역될 때에는 명시적 형식으로 초기화하자.
개요auto를 사용해서 변수를 선언하면 형식을 명시적으로 지정했을 때보다 기술적으로 여러 강점이 있다.But, 가끔 auto가 이상한 짓을 한다. std::vector features(const Widget& w); 라고 쳤을 때 코드bool highPriority = featrues(w)[5]; processWidget(w, highPriority); 문제점여기서 highPriority의 bool을 auto로 변경하면? processWidget은 미정의 행동이 된다. Why?std::vector에서 std::vector::operator[]가 돌려주는 것은 bool 형이 아니라 std::vector::reference 형식의 객체를 리턴한다.이는 대리자 클래스(proxy class)로 다른 어떤 형식의..
2016.09.10 -
[effective modern c++] 항목 3: decltype의 작동 방식 숙지
decltype주어진 이름이나 표현식의 형식을 알려준다. C++11에서 decltype는 함수의 반환 형식이 그 매개변수 형식들에 의존하는 함수 템플릿을 선언할 때 주로 쓰인다. 너무 이해 안 되서 한 10번은 넘게 읽은 것 같다. 예시로 이해해보기12345 std::deque intDq; intDq.resize(10); authAndAccess(intDq, 5) = 10; std::cout
2016.07.16 -
[effective modern c++] 항목 2 : auto 연역 규칙
핵심- auto 형식 연역은 대체로 템플릿 형식 연역과 같다. 다른 경우는 auto 형신 연역은 중괄호 초기치가std::initializer_list를 나타낸다고 가정하는 반면 템플릿 형식 연역은 그렇지 않다. 타당한 이유는 없다. 그냥 이렇다. 123456auto x = {1,2,3}; // std::initializer_list templatevoid f(T param); f({1,2,3}); // error Colored by Color Scriptercs 두 상황의 연역 규칙이 다르다는 것을 꼭 알아두어야 한다고 한다. - 함수의 반환 형식이나 람다 매개변수에 쓰인 auto에 대해서는 auto 형식 영역이 아니라 템플릿 형식 연역이 적용된다. 1234567891011auto create_init_..
2016.03.01 -
혼자 연구하는 C/C++ 7장 정리(기억 부류)
1. 지역변수기억부류란?기억부류(Storage Class)란 변수가 저장되는 위치에 따라 결정되는 변수의 여러 가지 성질을 의미한다.전역변수와 지역변수두 기억 부류의 차이점- 변수의 선언 위치가 다르다.- 변수의 통용 범위가 다르다. 전역 변수는 함수 내부에 선언된 것이 아니므로 프로그램 전체가 공유한다.지역 변수는 함수가 자신의 임무를 수행하기 위해 잠시 쓰고 버리는 것이다.- 변수의 파괴 시기가 다르다.변수는 메모리가 회수되면 변수 자체가 사라진다.전역 변수는 프로그램이 종료되면 비로소 파괴된다. 프로그램과 운명을 같이 한다.지역 변수는 함수가 끝나면 변수의 생명도 끝이난다. 함수와 운명을 같이한다.- 변수가 생성되는 기억 장소가 다르다.- 초기화 여부가 다르다. 전역변수는 자동으로 0으로 초기화, ..
2015.03.01