C++/문법 정리8 Chapter 08. 이동 문법 8.1 이동 생성자와 이동 대입 연산자 8.1-1 lvalue Def) lvalue 단일 식을 넘어 지속되는 개체 결국 지금까지 봐 온 많은 것들. Note) lvalue 종류 주소가 있음/이름 있는 변수/const 변수/배열 이름 비트 필드/공용체/클래스 멤버/ 좌측 값 참조로 반환하는 함수 호출/문자열 리터럴 // main.cpp #include using namespace std; struct Person { string mName; int mAge; } int main() { // lvalue int num = 10; // num const int NAME_MAX = 10; // NAME_MAX int* numberPtr = &num // numberPtr map scoreMap; // score.. 2022. 5. 9. Chapter 07. 스마트 포인터 7.1 unique_ptr 7.1-1 원시 포인터 Def) 원시 포인터(Naked Pointer) 이전까지 사용해오던 C 스타일의 포인터. 아무것도 없이 위험한 세상에 노출되어 있단 뜻. Note) 원시 포인터는 더이상 필요하지 않다면 메모리 해제 필수 MyVector* ptrVec = new MyVector(7.f, 7.f); ... delete ptrVec; ptrVec = nullptr; Note) 스마트 포인터는 delete를 직접 호출할 필요가 없음. 그래서 스마트임. 그리고 가비지 컬렉션보다도 빠름. 쓰이지 않는 순간 곧바로 지워주기 때문. Note) 스마트 포인터의 종류 - unique_ptr: 매우매우 중요한 스마트 포인터. 이를 이해하기 위한 문법을 하나 더 숙지하고 있어야 함. - sh.. 2022. 5. 8. Chapter 06. C++11/14/17 6.1 새로운 키워드 6.1-1 auto Def) auto 키워드 자료형을 추론함. 다만, C++은 컴파일 중에 자료형이 정해져야 하는 stronged type이기 때문에, 실제 자료형은 컴파일 동안 추론됨. 따라서 반드시 auto 변수는 초기화되어야 함.(참조랑 비슷) auto x1; // 컴파일 에러. auto x2 = "Hello"; // 컴파일 성공. 다만, 좋은 예는 아님. auto x3 = 3.141592; // 컴파일 성공. Note) Javascript와는 조금 다른 auto 키워드 // In JS. var x; // 컴파일 성공. x는 정의되지 않음. x = "Hello"; // 컴파일 성공. x는 문자열 x = 100; // 컴파일 성공. x는 정수 // In C++ auto x; //.. 2022. 5. 8. Chapter 05. 템플릿과 파일 시스템 5.1 템플릿 프로그래밍 5.1-1 템플릿이란, Note) 너무 많은 add() 함수 구현 코드 만약 우리가 모든 primitive type에 대응하는 add() 함수를 만든다고 해보자. 그럼 아래와 같은 코드가 쏟아져 나옴. 이를 좀 더 간편하게 하기 위해서 나온 기능이 템플릿. char add(char op1, char op2); int add(int op1, int op2); float add(float op1, float op2); ... Def) 템플릿(Template) 사용자가 템플릿 매개 변수에 대해 제공하는 인자를 기반으로 컴파일 타임에 클래스 또는 함수 코드를 생성하는 구문. Note) 어떻게보면 복붙과 비슷함. ex. 인라인 함수, 매크로 함수, ... 클래스와도 비슷함. 청사진을 만들.. 2022. 5. 7. 이전 1 2 다음