ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 연산자
    1. 개체를 만들고 생성자를 호출하는 데 사용됩니다. 값 형식에 대한 기본 생성자를 호출하는 데도 사용
      int i = new int();
      앞의 문에서 i는 int 형식의 기본값인 0으로 초기화된다. int = 0;
    2. 객체 생성
      1. 모든 값 형식에는 암시적으로 공용 기본 생성자가 포함되기 때문에 구조체에 대한 기본 생성자를 선언하면 오류가 발생.
      2. 구조체 형식에 대해 매개 변수가 있는 생성자를 선언하면 그 초기 값을 설정할 수 있지만 이 방법은 기본값이 아닌 다른 값이 필요한 경우에만 사용.
      3. 구조체와 같은 값 형식 개체는 스택에 만들어지고 클래스 같은 참조 형식 개체는 힙에 만들어진다.
        1. 두 형식의 개체는 모두 자동 소멸된다.
        2. 값 형식을 기반으로 한 개체는 범위를 벗어날 때 소멸되는 반면 참조 형식을 기반으로 한 개체는 이에 대한 마지막 참조를 제거한 후에 지정되지 않은 임의의 시간에 소멸된다는 점에서 차이가 있다.
        3. 많은 용량의 메모리, 파일 핸들 또는 네트워크 연결 같은 고정된 리소스를 사용하는 참조 형식의 경우 개체가 가능한 빨리 소멸되도록 명확한 종료 방식을 사용하는 것이 좋을 수도 있다.
    3. new 연산자의 특징
      1. 오버로드 되지 않는다.
      2. 연산자가 메모리 할당에 실패하면 OutOfMemoryException 예외를 throw한다.

    반응형

    댓글

Designed by Tistory.