본문 바로가기

분류 전체보기

(317)
# Lang/C++ 6.2 중괄호 리스트 초기화 중괄호 초기화, 소괄호 초기화관점에 따라 초기화 정책이 바뀐다 :어떤 괄호를 사용했는가? (소괄호, 중괄호)괄호 안에 인자의 수는 몇개인가? (0개, 1개, 2개 이상) 사례 구분 :인자없는 소괄호 : value initializaiton인자없는 중괄호 : value initialization단일인자 소괄호 : direct initialization단일인자 중괄호 : direct initialization다중인자 소괄호 : direct initialization다중인자 중괄호 : aggregate initialization 서론 : 여러개의 인자를 다룰 때에는,소괄호 초기화와 중괄호 초기화의 차이점을 알아야 한다. 집합 초기화 (Aggregate initialization)다중인자를 다루는 중괄호 초기화..

2019. 4. 30. 13:38

# Lang/C++ 6.1 로컬변수 초기화 기본 초기화 (default initalization)아무것도 하지 않는 초기화.어떤 초기화도 진행하지 않았을 때 발생한다. 발생 사례 :T object;new T;아무것도 하지 않는 것이 표준이기 때문에,기본 초기화를 진행한 변수는 쓰레기값을 갖게된다. 발생 사례 해석 :이름 유무에 관계없이 (auto, static, thread-local) 스토리지로 선언되었고, 어떠한 초기화도 사용하지 않은 경우. 복사 초기화 (copy initialization)다른 오브젝트의 값을 복사하여 초기화. 발생 사례 :T object = other;T array[N] = { other };throw exception and catchpass arguments when call by valuereturn expressi..

2019. 4. 22. 19:25

# Lang/C++ 5.2 완벽한 전달 1. 보편참조 (universal reference)보편참조는 템플릿에서만 사용할 수 있다. 모든 참조를 가르킬 수 있어, 각 참조의 모든 경우를 하나의 케이스로 받을 수 있으므로,유연한 템플릿 함수의 설계가 가능하다. 모양새는 우측값 참조지만, universal 참조로 번역된다.늬앙스가 다르므로 주의. 2. 참조겹침 규칙 (reference collapsing) 레퍼런스 겹침 법칙 (참조 캐스팅 법칙)(A&)&becomes A&(A&)&&becomes A&(A&&)&becomes A&(A&&)&&becomes A&& 보편참조를 우측값 참조로 캐스팅하면,보편참조가 어떤 참조형식을 받았는지 알아낼 수 있다. 3. 완벽한 전달 (perfect forwarding)보편참조가 받은 참조형식을 손상시키지 않고, ..

2019. 4. 19. 23:24

# Lang/C++ 5.1 이동 의미론 1. 값의 이동데이터의 소유권을 옮기는 것.포인터를 옮기고, 원본 데이터를 nullptr로 교체하는 것으로 구현한다. 2. 복사 생성자 (copy constructor)복사를 통하여, 같은내용의 새로운 객체를 만드는 생성자.아래 두 객체의 data는 내용은 같지만, 주소는 다르다. 3. 이동 생성자 (move constructor)이동을 통하여, 같은내용의 새로운 객체를 만드는 생성자. 소유권이 변경되어야 하므로, 원본 객체의 데이터는 사라졌지만.데이터를 그대로 사용했으므로, 주소는 변하지 않는다. 4. 임시객체 이동 생성자 (rvalue reference move constructor)우측값은 임시객체의 특징을 갖는다.내용을 복사하는 것 보단, 이동시키는 것이 낫다. 5. 좌측값, 우측값 이동 생성자이..

2019. 4. 18. 21:41

# Lang/C++ 4.3 우측값 참조 (rvalue reference) 선행 지식 : 4.2 값의 유형 (glvalue, prvalue, xvalue)값의 유형 (Value Category) 값의 분류기준 : have identity? 값이 식별성을 갖고 있는가? can be moved from? 값이 메모리에서 이동할 수 있는가? 기본적인 분류단위를 Primary Category라고 하고, 두 개 이상..aerocode.net 1. 우측값 참조변수 (rvalue reference variable) prvalue 또는 xvalue 값을 참조하는 변수. 일반 참조는 선언문에서 lvalue를 요구하지만, // 좌측값 참조.우측값 참조는 rvalue를 요구한다. example : int val = 3; int &l_ref = val; // OK. val은 lvalue. int &..

2019. 4. 16. 23:52

# Lang/C++ 4.2 값의 유형 (glvalue, prvalue, xvalue) 값의 유형 (Value Category)값의 분류기준 :have identity? 값이 식별성을 갖고 있는가?can be moved from? 값이 메모리에서 이동할 수 있는가? 기본적인 분류단위를 Primary Category라고 하고,두 개 이상의 복합분류를 Mixed Category라고 한다. Primary Categories :xvaluelvalueprvalue Mixed Categories :rvalue (xvalue + prvalue)glvalue (xvalue + lvalue) Have Identity? (glvalue)값이 식별성을 갖고 있는가? 공간의 성질을 가지고 있는 값의 통칭.데이터를 저장할 수 있는 메모리의 위치정보이다. Can be moved from? (rvalue) 메모리에서..

2019. 4. 11. 23:52

# Lang/C++ 4.1 표현식 표현식 (Expressions)연산자와 피연산자가 모여 만들어진 것, 계산된 표현식은 하나의 값(Value)을 만들어내고, 부가적인 동작을 일으킬 수 있으며,하나의 표현식은 여러개의 서브-표현식으로 표현될 수 있다. example :표현식 2+2 -> 4표현식 pritnf("%d", 4) -> 4를 표준출력하는 부가동작 발생. 주 표현식 (Primary Expressions)주 표현식은 좀 더 복잡한 표현식을 이루는 구성단위이며,하나의 주 표현식 또한, 여러개의 주 표현식으로 구성되어있을 수 있다. 리터럴, 식별자, 범위해설 연산자( :: )가 수식된 식별자 등이 여기에 해당된다. 주 표현식의 종류 :리터럴, Literals식별자, Un-qualified identifiers 범위해설 연산자가 수식된 식..

2019. 4. 10. 21:47

# Lang/C++ 3.2 기억영역 클래스 지정자 기억영역 클래스 지정자 (Storage Class Specifiers)스토리지 클래스는 변수의 다양한 특성을 결정하며,C++에서 지원하는 스토리지 클래스는 다음과 같다. 스토리지 클래스가 결정하는 변수의 특성 :변수의 범위 생명주기링크특성 외부링크 : 외부소스의 변수를 참조.내부링크 : 내부소스의 변수를 참조. C++ 기억공간 클래스 :auto (untill C++11, 키워드의 의미가 변경됨)register (untill C++11, 폐기됨)staticexternthread_local (since C++11)mutable Auto 스토리지C++11 이전일반적으로 사용되는 변수의 스토리지 타입이다.스택에 쌓이며, 범위를 벗어나면 스택에서 제거되어 사라진다.변수의 생명주기가 자동적으로 관리된다는 뜻에서 자..

2019. 4. 6. 21:44