E D R , A S I H C RSS

BackLinks search for "UPNumber"

BackLinks of UPNumber


Search BackLinks only
Display context of search results
Case-sensitive searching
  • MoreEffectiveC++/Techniques1of3
         class UPNumber {
          UPNumber();
          UPNumber(int initValue);
          UPNumber(double initValue);
          UPNumber(const UPNumber& rhs);
          ~UPNumber(); // 파괴자가 사역(private)으로 선언되었다.
         UPNumber n; // 에러! 파괴자 사역(private)이라 작동 할수 없다.
         UPNumber *p = new UPNumber; // 통과
         자 다음과 같이, UPNumber 클래스는 Heap상에서만 사용할수 있는 객체만을 생성 할수 있다. 이것의 대안으로는 Item 26 마지막에 나온 예제와 같이 모든 생성자 만을 사역(private)화 시키는 것이지만, 이 아이디어의 문제는 많은 생성자가 모두 사역(private)으로 있어야 하고, 그것들을 반드시 기억해야 한다는 점이다. 기본 생성자는 물론, 복사 생성자를 전부 선언해 주어야 한다. 그렇지 않으면 컴파일러는 기본적으로 모두 공역(public)으로 취급하고 지역 변수를 만들수 있다. 결과적으로, 파괴자만을 사역(private)화 시키는 것이 간단하다.
         class UPNumber { ... }; // 생성자와 파괴자 모두 사역(private)로
         class NonNegativeUPNumber:
          public UPNumber { ... }; // 에러! 생성자와 파괴자를 컴파일 못한다.
          UPNumber value; // 에러! 생성자와 파괴자를 컴파일 못한다.
         class UPNumber { ... }; // 파괴자를 보호(protected)로 설정한다.
         class NonNegativeUPNumber:
          public UPNumber { ... }; // 이제는 유도되는 데는 지장 없다.
          UPNumber *value; // 위에서의 객체 선언을 포인터로 바꾸었다.
         : value(new UPNumber(initValue)) // 다음과 같이 초기화 리스트로 객체를 만들고
         자, 지금까지 다소 맹목적(?)으로 Heap영역에 객체 올리기에만 열중했다. 그럼 여기에서는 "on the heap"의 의미를 확실한 테스트로서 알아 보도록 하겠다. 앞서 써먹은 NonNegativeUPNumber를 non-heap 객체로 만드는건 뭐 틀리지 않은 것이다.
         NonNegativeUPNumber n; // fine
Found 1 matching page out of 7544 total pages

You can also click here to search title.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
Processing time 0.0101 sec