|
C++을 공부하시나보네요.
TTntStringList는 클래스 타입입니다. 언어 자체에 내장된 타입을 기본타입이라고 하고, 클래스로 정의된 타입을 클래스타입이라고 합니다. 이건 클래스에 대해 공부하셔야 합니다.
참고로 TTntStringList는 C++빌더의 기본 라이브러리에 기본적으로 포함된 타입이 아니라, TNT 라이브러리라는 서드파티 컴포넌트 라이브러리에 포함된 타입입니다. 최근의 C++빌더 버전들(2009 이후 버전들)에서는 유니코드를 기본으로 지원하기 때문에 필요없어졌지만, C++빌더6나 2007 등의 예전 버전에서는 유니코드가 지원되지 않았습니다. TNT 라이브러리는 유니코드를 지원하기 위한 서드파티 컴포넌트 라이브러리입니다.
반면 TStringList는 C++빌더의 기본 라이브러리에 포함된 클래스입니다. 그러니까, 유니코드가 지원되지 않던 C++빌더 버전에서, TStringList를 써야 하는데 유니코드가 필요한 경우 TTntStringList를 쓰는 경우가 있었습니다. 일반적이지는 않습니다.
C++은 기본적으로 객체를 변수로 만들 수도 있습니다만, VCL 타입의 클래스는 불가능합니다. VCL 타입이란 TObject에서 상속된 클래스를 말합니다.TTntStringList와 TStringList도 TObject에서 상속되었습니다.
김경호 님이 쓰신 글 :
: 짧은 C 지식으로 C++을 공부하고 있습니다만
: 주변에 물어볼 사람도 없고 혼자 하려니 많이 어렵네요.
:
: 몇가지 여쭙고자 합니다.
:
: TTntStringList *FileList = new TTntStringList;
:
: 와 같은 코드에서
:
: TTntStringList *FileList = new TTntStringList;
: 는 TTntStringList타입의 FileList라는 포인터변수를 선언하는것 이라고 알고있습니다.
:
: TTntStringList 형이 int 형이나 char형 과 같이 정식으로 정해져있는 변수형인지요?
:
: 그 다음은.. FileList변수는 포인터변수로써 주소값이 들어가야 될 터인데
: new TTntStringList 을 대입하고 있습니다.
: 찾아보니 new는 malloc과 비슷한 기능을 한다고 하는데
: 위 코드는 메모리에 TTntStringList 크기만큼 장소를 할당하여 그 할당된 장소의 주소를 FileList에 대입하는 것인지요?
:
: 그렇다면
: TTntStringList List;
: TTntStringList *FileList = &List;
: 라고 쓸 수는 없는지요?
:
: TTntStringList 변수를 하나 생성해서 그 주소를 집어넣어도 될 것 같은데 이렇게 하지 않는 이유도 궁금합니다.
:
: 질문을 요약하면
:
: 1. TTntStringList 형이라는 정식 변수형이 있는지? 있다면 자세한 정보는 어디를 참조하면 되는지?
: 2. 코드를 분석하면 메모리에 임의의 TTntStringList 크기만큼 할당하여 이 할당된 주소값을 FileList에 넣는것인지?
: 3. TTntStringList 변수를 만들고 이 변수의 주소를 직접 집어넣지 않는 이유는 무엇인지?
:
: 입니다.
:
: 틀린 부분이나 잘못 이해하고 있는 부분이 있으면 지적과 함께 답변도 부탁드리겠습니다.
: 감사합니다.
:
|