본문 바로가기

Development/C++11

복사생성자와 복사 대입 연산자 복사생성자 : 객체 정의시 특정 객체를 매개변수로 사용할 때 호출되는 생성자 예) Widget(const Widget& rhs); - 자기자신의 인스턴스에 대해 대입될 경우 호출된다. - 함수의 인자로 들어갈때 복사되는 과정에서 호출된다. - 함수의 리턴값으로 사용되면서 복사되는 과정에서 호출된다. - 디폴트 복사 생성자가 생성되나 단순히 값에 의한 복사를 함으로 (얕은 복사) 위험한 요소가 있다. - 하여 동적 할당된 메모리를 복사해야 할 경우 사용자 정의 복사 생성자를 정의하여 깊은 복사를 구현해주어야한다. 복사 대입 연산자 : 같은 타입의 다른 객체에 어떤 객체의 값을 복사하는 용도로 쓰이는 함수 예) Widget& operator=(const Widget& rhs); 어떤 객체가 새로이 정의될 때.. 2013. 12. 11.
데이터(data), 스택(stack), 힙(heap) 영역 실행중인 프로그램은 메모리가 할당된다. 이 메모리 공간의 종류는 데이터 영역, 스택 영역, 힙 영역이 있다. 데이터 : 전역변수 (프로그램 시작 후 메모리 공간에 올라가서 종료시까지 존재)를 위한 영역 Static변수 (프로그램 시작과 동시에 메모리 공간에 올라가서 종료시까지 존재)를 위한 영역 스택(Stack)은 지역변수, 매개변수 같은 컴파일 타임에 크기가 결정되는 메모리를 올리는 공간이다. 여기서 컴파일 타임에 크기가 결정된다는 점에 주목하자. 예를 들어 배열을 선언할 경우 int arr[10];이런식의 선언은 컴파일때 40바이트라는 크기가 결정되기 때문에 Stack에 올라간다. int a = 4; 이 경우 int 형 4바이트가 크기로 선언되고, 4라는 값이 들어가는 부분은 런타임시 결정된다. 즉,.. 2013. 12. 11.
STL이란? (1) STL : Standard Template Library의 약자. 일반적으로 많이 사용될 수 있는 자료구조와 알고리즘 모음 라이브러리. 템플릿으로 만들어져 있으며, 이해하기 위해서는 C++의 템플릿을 이해해야할 필요가 있다. STL은 Generic Programming으로 만들어진 대표적인 예이다. Generic이란 총칭한다는 뜻으로 C++에서는 변수의 타입을 총칭한다. - 템플릿을 이용하면 총칭화된 타입을 사용하는 클래스와 함수를 만들 수 있다. - 템플릿을 사용하면 타입에 제약을 받지 않는 로직을 기술 할 수 있다. - Generic Programming을 하기 위해서는 템플릿이 꼭 필요하다. * 참조 : 한빛 네트워크 최흥배님 글 2011. 11. 3.