본문 바로가기

Heap

[C++] 대입 연산자 오버로딩 대입 연산자 A a = b; 위와 같은 문장이 있다. 여기서 b는 A클래스의 b객체이다. 이 문장은 다음과 같이 묵시적으로 변환이 일어난다. A a(b); 결국 a라는 이름으로 객체 생성할때 복사 생성자를 호출 하는 형태가 된다. 그럼 다음과 같은 문장은 어떤 일이 일어날까? A a; B b; a = b; 여기서 a = b; 이 문장은 a(b) 이런 형태로 묵시적 변환이 일어 나지 않는다. 위와 같은 대입연산을 썼지만, 객체 생성문장이 아니기 때문이다. 그럼 여기서 a = b;는 다음과 같이 해석 될 것이다. a.operator=(b); 복사생성에서 호출되는 대입연산과 오버로딩 되어 있는 operator 함수 호출에서의 대입연산을 혼동하지 말자 대입 연산자 오버로딩 #include using namesp.. 더보기
[C/C++] 데이터, 스택(Stack), 힙(Heap) 영역 우리들이 프로그램을 실행하면, 운영체제는 우리들이 실행한 프로그램을 위해 메모리 공간을 할당해줍니다. 그냥 할당해 주느냐? 그것이 아니라 용도별로 메모리 공간을 할당해 운영체제가 메모리 영역을 구분해 메모리 공간의 효율적 사용을 하게 만들어 줍니다. 1. 메모리 영역의 종류 * 데이터영역 : 전역 변수, Static변수를 위한 메모리 공간 - 전역 변수 : 프로그램이 시작하자마자 메모리 공간에 올라가서 종료 될때까지 남아있는다. - Static 변수 : 프로그램 시작과 동시에 메모리 공간에 올라가서 종료될때까지 남아 있긴 한다. * 힙영역 : 런타임에 크기가 결정될수 있는 요소들을 올리기 위한 공간 * Stack : 컴파일 타임에 크기가 결정될 수 있는 요소들을 메모리 공간에 올리기 위한 영역 각각의 영.. 더보기