-
new 너 정확히 뭐니?예전 글들/C, C++ 2010. 9. 18. 14:35반응형
재미삼아 C++기초 공부하고 있는데 흠...
Point p1(10, 20);
p1.showData();
이렇게 하는 거와
Point* p1 = new Point(10, 20);
p1->showData();
이거랑 뭔차이인거지??
그리고 왜 new를 사용하면 포인터로 선언해줘야하는거나요?? 해결해 봅시다!! 두둥!!! -_-;
우선 new 연산자가 뭔지 알아볼까요?
MSDN 참고했습니다.
new 연산자
- 개체를 만들고 생성자를 호출하는 데 사용됩니다. 값 형식에 대한 기본 생성자를 호출하는 데도 사용
int i = new int();
앞의 문에서 i는 int 형식의 기본값인 0으로 초기화된다. int = 0; - 객체 생성
- 모든 값 형식에는 암시적으로 공용 기본 생성자가 포함되기 때문에 구조체에 대한 기본 생성자를 선언하면 오류가 발생.
- 구조체 형식에 대해 매개 변수가 있는 생성자를 선언하면 그 초기 값을 설정할 수 있지만 이 방법은 기본값이 아닌 다른 값이 필요한 경우에만 사용.
- 구조체와 같은 값 형식 개체는 스택에 만들어지고 클래스 같은 참조 형식 개체는 힙에 만들어진다.
- 두 형식의 개체는 모두 자동 소멸된다.
- 값 형식을 기반으로 한 개체는 범위를 벗어날 때 소멸되는 반면 참조 형식을 기반으로 한 개체는 이에 대한 마지막 참조를 제거한 후에 지정되지 않은 임의의 시간에 소멸된다는 점에서 차이가 있다.
- 많은 용량의 메모리, 파일 핸들 또는 네트워크 연결 같은 고정된 리소스를 사용하는 참조 형식의 경우 개체가 가능한 빨리 소멸되도록 명확한 종료 방식을 사용하는 것이 좋을 수도 있다.
- new 연산자의 특징
- 오버로드 되지 않는다.
- 연산자가 메모리 할당에 실패하면 OutOfMemoryException 예외를 throw한다.
반응형'예전 글들 > C, C++' 카테고리의 다른 글
C언어, C++ 이란 무엇인가 (0) 2011.02.11 합병정렬(MergeSort)_(1) (0) 2010.12.24 이분검색(Binary Search) (0) 2010.12.23 내가 못외우는 것들 중에 하나..sizeof()로 구한 데이터 타입별 크기 (0) 2010.12.23 [C++] 이런것도 되는군요 *this (0) 2010.09.24 댓글
- 개체를 만들고 생성자를 호출하는 데 사용됩니다. 값 형식에 대한 기본 생성자를 호출하는 데도 사용