4. 스터디 진행 ¶
- auto : name이 길 때(Type 연역 가능)
- 길어지는 이유
- :: -> 클래스, 바깥 Scope, enum, struct, namespace에서 씀
- <> -> 템플릿
- :: -> 클래스, 바깥 Scope, enum, struct, namespace에서 씀
- 파라미터는 auto 안됨. range based for에서 주로 씀.
- 길어지는 이유
- uniform 초기화
- 초기화 시 = : 복사 생성자
- 배열 : 값이 여러개
- 초기화 방법을 {}로 통일
- 배열을 동적할당 할 때도 이용 가능
- 초기화 시 = : 복사 생성자
- initializer_list
- 어떤 값이 올지 모르겠는 경우 그냥 initalizer_list로 하면 가변 인자의 값을 받을 수 있다.
- 어떤 값이 올지 모르겠는 경우 그냥 initalizer_list로 하면 가변 인자의 값을 받을 수 있다.
- Reference
- 좋은 거지만 단점 : 참조하는 것이 실제 존재하는 변수 -> 다시 바꾸기 힘듬. 상수가 들어갈 수 없다.
- 레퍼런스와 레퍼런스 아닌 것을 오버로딩하면 위에 있는거 실행(레퍼런스로 오버로딩 된 것을 위로 올리자.)
- 좋은 거지만 단점 : 참조하는 것이 실제 존재하는 변수 -> 다시 바꾸기 힘듬. 상수가 들어갈 수 없다.
- rvalue Reference
- rvalue : 대입 연산자에서 오른쪽에만 오는 것(상수, 임시객체)
- 표시 : &
* 대표적 예 : move semantics->move constructor, move operator
- move <-> copy
- Car(Car &&)->shallow copy+원본 데이터 포인터 null
- move <-> copy
- rvalue : 대입 연산자에서 오른쪽에만 오는 것(상수, 임시객체)
- 연산자 오버로딩
- 0.5+c하면 오버로딩이 안됨.
- 전체 오버로딩-> C operator+(float l, complex r){return r+l;}
- 0.5+c하면 오버로딩이 안됨.
- friend : 내가 만든 것을 상대방에게 열어줌
- template : Generic Programming
- STL : Container, Algorithm, Iterator -> std::find(시작점,끝점,값) : 있으면 이터레이터로 위치, 없으면 끝점
- Algorithm -> 함수를 입력(함수포인터, Function Object(()연산자 오버로딩, <functional>을 include 해야됨.) 등)
- 함수를 즉석해서 인라인 한다 - 함수가 들어갈 자리가 definition & 익명
- Algorithm -> 함수를 입력(함수포인터, Function Object(()연산자 오버로딩, <functional>을 include 해야됨.) 등)
- 이것이 오늘 배울 Lamda Expression이다.
- 이름이 없다!!!
- [],(),{} 으로 표시
- 캡쳐블록,(인자),expt_list->ret type{함수코드}
- 인자와 함수코드는 함수 짜듯이 짜면 된다.
- 캡쳐블록
- 이름이 없다!!!