목록게임프로그래밍 (83)
bdfgdfg
스마트 포인터(Smart Pointer) C++은 new키워드를 통해 메모리를 동적할당 하였다면 메모리 누수를 막기 위해 꼭 다 사용하고 나서 delete를 해주어야 한다. C++11에서는 이러한 동적할당에 대해 더이상 직접 delete를 호출하지 않더라도 포인터가 필요하지 않게 되었을 때 자동으로 delete를 직접 호출해주는 기능이 추가 되었다. 그것이 바로 스마트 포인터. 자동으로 delete를 해준다는게 다른 객체지향 언어의 가비지 컬렉션의 개념과는 거리가 멀다. 이유는 스마트 포인터는 필요가 없어진 순간에 바로 알아서 delete를 하기 때문. (자동으로 삭제를 한다는점에선 같음) 스마트 포인터의 종류 1. unique_ptr 2. shared_ptr 3. weak_ptr 먼저 유니크 포인터를 ..
먼저 이것을 설명하기 전에 lvalue와 rvalue의 개념이 잡혀있어야 한다. C++에서의 모든 표현식은 lvalue 또는 rvalue이다. lvalue는 단일 식(해당 코드 라인)을 넘어 없어지지 않고 지속되는 객체. -> 주소가 존재하는 이름 있는 변수 (const타입 포함). -> 문자열 리터럴 상수의 경우에는 lvalue이다. 반면 rvalue의 경우에는 단일 식을 넘어 지속되지 않는 임시적인 객체. -> 임시 객체란 런타임에 잠깐 사용되는 객체로 -> 상수 또는 임시 객체는 rvalue라고 할 수 있다. -> 주소가 없는 객체,리터럴 상수, i++, i--등등 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 int main() { int x = 100; /..
람다(lambda) 식 간단하게 말하면 이름없는 함수를 의미한다. 함수를 호출하는 방법은 C++에서는 다양한 방법이 존재한다. 1. 일반 전역 함수, 멤버 함수등 2. 함수 객체 ( 클래스 () 연산자 오버로딩 ) 3. 함수 포인터사용 여기서 벡터 컨테이너의 요소를 정렬하는 코드를 보면. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 bool Compare(std::pair lhs, std::pair rhs) { return lhs.first.GetValue() > rhs.first.GetValue(); // 내림차순 정렬 } int main() { srand(time(nullptr)); std::vector vc; vc.reserve(100); for ..
using c++11에서 추가된 typedef대신 사용할 수 있는 키워드 typedef을 사용하면 사용자가 여러 타입의 별칭을 생성하고, 사용할 때에는 해당 별칭을 통해 사용할 수 있다. -> 참조 키워드에서 해당 메모리에 다른 별칭을 붙이는 것과 비슷한 개념. -> C/C++에서 이미 정의된 자료형이나 사용자 정의 자료형을 사용자가 원하는 별칭을 붙여 사용 가능하다. typedef이 사용될 수 있는 간단한 예제를 보면 1 2 3 4 5 6 7 8 9 10 11 typedef std::list::iterator ListPos; int main() { std::list list; list.push_back(100); ListPos iter = list.begin(); std::cout