Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1722] Re:리스트 객체 삽입에 관한 질문입니다.
남병철.레조 [lezo] 1364 읽음    2002-12-12 21:46

음;; 하나만 답변 달려구 했다가..
지나는 길에 잠시.. ^^;;

일단 템플릿으로 바로 구현하시는건 크고작은 실수를 갖기 쉽습니다.
클래스로 미리 구현해 보시고 괜찮으면 템플릿으로 바꾸는 방법이 더 안전합니다.
템플릿은 아시다시피 컴퓨터에겐 별의미가 없습니다.
잘만들었다면 사용자에게 편리할 뿐이지요.

하지만 타입의 오류가 있기 쉬우니 여러 클래스를 만들어 테스트 해보시고
템플릿으로 마지막에 바꾸신다면 훨씬 안전한 템플릿을 만드실줄로 믿습니다. ^^

그리고 6번 라인의 형태는 ... 만드시는 double linked list가 어떤 데이타를 갖느냐가
좌우하지 않을까 합니다.
물론 융통성을 두기위해서라면 ...
Type* pData가 더 낳지 않을까 생각하지만 안정화 클래스 버전을 만들어 보시고 템플릿
으로 구현하시는게 좋을듯싶습니다.



[참고]
저처럼 지나가 템플릿이 모야? 하면서 그냥 지나칠 분들을 위해 간단히 템플릿을 설명드리면...

    1. 간단한 템플릿
    각진 괄호안의 class 키워드는 단순히 type이라는 의미로 생각하면 된다.
    class 키워드 다음에 오는 변수는 템플릿 인수라고 불린다.

    컴파일러는 다루게 될 데이타형을 모르기 때문에 템플릿 키워드와 그다음에 오는
    함수 정의를 만나도 아무일하지 않는다. 단지 나중에 사용할 가능성이 있는 템플릿
    이라고만 기억할 것이다.
    코드 생성은 프로그램의 명령문이 실제로 그 함수를 호출할때까지는 일어나지 않는다.
    함수 템플릿의 템플릿 인수로 int가 오면 템플릿 인수의 자리에 int가 치환되면서
    특정 abs() 함수형을 생성한다. 이것을 함수 템플릿의 인스턴스화라한다.
    각 함수의 인스턴스화 버전을 템플릿 함수라 한다.
    (템플릿 함수는 함수 템플릿의 인스턴스이다. ^^;)
    이렇듯 컴파일러는 새로운 타입으로 템플릿 인수를 접하게되면 각 버전(long,double)의
    새로운 템플릿 함수가 생성된다. 물론 두번 호출되더라도 하나의 인스턴스만 생성될
    만큼 컴파일러는 똑똑하다.

    즉, 프로그램이 사용하는 RAM의 양은 템플릿을 사용하든 세개의 별도 함수를 작성하든
    동일한것이다. 절약되는 것은 세 개의 별도 함수를 소스 파일에 입력해야 하는 번거로움
    이다. 이는 리스팅을 더 짧고 이해하기 쉽게 만들며 수정또한 한곳에서 가능하다.
    컴파일러는 전적으로 함수 호출의 인수들에서 작동된다.
    즉, 함수 리턴형은 여기서 고려되지 않는다.(함수겹지정과 같음)
    함수 템플릿 코드는 실제 메모리에 놓이지 않고 단지 청사진 또는 패턴의 역할을 한다.
    이것은 클래스가 많은 객체를 만들기위한 청사진이란 것과 같은 의미이다.

덧붙여서...
템플릿 함수를 만들때는 고정된 형에 작용하는 일반 함수로 시작해서 필요한 타입의
설계가 끝나 모든 것이 제대로 작동될 때 함수 정의를 템플릿으로 변환하고
추가되는 형에서 작동하는지 검사한다.





김인구.구야 님이 쓰신 글 :
: 이중연결리스트 입니다.
:
: 6번 라인이
: Type* pData;
: Type  Data;
: 둘중 어떤것이 되는게 바람직한 것인가요?
:
: 01:  template <class Type>
: 02:  class TDLL {
: 03:    // 생략
: 04:  private:
: 05:      struct Node {
: 06:        Type  Data;
: 07:        Node* pPrevNode;
: 08:        Node* pNextNode;
: 09:      };
: 10:    // 생략
: 11:  };
:
: 궁금한 부분이 너무 많아서 그런지 어디서 어떻게 질문을 해야할지도 모르겠습니다.
: 템플릿클래스를 이용한 리스트에 대해 여러말씀 부탁드립니다.
: 답변에 답변을 부탁하더라도 양해바랍니다.

+ -

관련 글 리스트
1695 리스트 객체 삽입에 관한 질문입니다. 김인구.구야 1244 2002/12/09
1722     Re:리스트 객체 삽입에 관한 질문입니다. 남병철.레조 1364 2002/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.