본문 바로가기
728x90

modernC++7

스마트 포인터 스마트 포인터 : 포인터를 알맞은 정책에 따라 관리하는 객체( 포인터를 래핑해서 사용) shared_ptr, weak_ptr, unique_ptr 이렇게 3가지가 있으며 Shared_ptr 구현 class Knight { public: Knight() { cout 2023. 3. 6.
lamda 람다 함수 객체를 빠르게 만드는 문법 [ ] 캡쳐(capture) : 함수 객체 내부에 변수를 저장하는 개념과 유사 사진을 찰칵 캡쳐 하듯.. 일종의 스냅샷을 찍는다고 이해 기본 캡쳐모드: 값(복사)방식(=), 참조방식(&) 참조방식은 직접 해당값의 주소에 들어가 값을 본다 변수마다 캡처 모드를 지정해서 사용도 가능 : 값 방식(name), 참조방식(&name) 모두 복사, 모두 참조방식 지양 매번 클래스, 함수포인터 이런걸 안만들어도 되는 장점이 있음 [캡쳐](인자값) {구현부} 구조 아이템을 찾는 기능을 만든다고 했을때 람다 문법을 이용해서찾아보자 using namespace std; enum class ItemType { None, Armor, Jewelry, Weapon, Consumable }; en.. 2023. 3. 6.
전달 참조(forwarding reference) 보편참조(universal reference) 전달참조(forwarding reference) && : &를 두번 -> 오른값 참조 전달 참조 : 왼값을 넣으면 왼값 참조, 오른값을 넣어주면 오른값 참조가 됨 오른값 : 왼값이 아니다 = 단일식에서 벗어나면 사용 X 오른값 참조 : 오른값만 참조 할 수 있는 참조 타입 class Knight { public: Knight() { cout 2023. 3. 6.
오른값 참조(rvalue reference) 왼값(lvalue) vs 오른값(rvalue) lvalue : 단일식을 넘어서 계속 지속되는 개체 rvalue : lvalue 가 아닌 나머지(임시값, 열거형, 람다, i++ 등) using namespace std; class Pet {}; class Knight { public: Knight() { cout 2023. 3. 6.
override using namespace std; class Creature { public: }; class Player : public Creature { public: virtual void Attack() { cout 2023. 3. 6.
delete(삭제된 함수) 예를들어 클래스 복사를 하게 하지 않겠다고 하면 #include using namespace std; class Knight { public: public: void operator=(const Knight& k) = delete; //복사를 못하게 하겠다. //모든 것을 뚫는 창 vs 절대방패 friend class Admin;//어드민 클래스에는 private기능에 접근 권한을 열어주겠다. private: int _hp = 100; }; class Admin { public: void CopyKnight(const Knight& k) { Knight k1; k1 = k;//불가 } }; int main() { Knight k1; Knight k2; k1 = k2; // 불가 return 0; } vo.. 2023. 3. 6.
728x90