안녕하세요 만해입니다.
이전에 찾아서 쓰고 있다가 오늘 생각이 나서 올립니다.
TTypedList란 객체인데요
Template을 이용해서 명시적으로 사용자 정의 타입에 대한 TList 객체와 같은 작업을 수행해 줍니다.
간단히 애기 드리면
TList를 이용할때는 다음과 같은 코드를
TList* Obj_List = new TList;
for ( int i = 0 ; i < 10 ; i ++ )
{
TAnObject* obj = new TAnObject;
Obj_List->Add(Obj);
}
for ( int i = 0 ; i < Obj_List->Count ; i ++ )
{
TAnObject* obj = (TAnObject*)TList->Items[i];
// Do it
}
위와 같은 형태로 TList에 입력 할때는 몰라도 받아 들일때는 명시적으로 타입 캐스팅을 해줘야 하는데요
TTypedList객체는 타입 캐스팅을 안 해줘도 되고요,
더 좋은건 입력 하는 객체가 소멸시 별도의 작업을 해줘야 할 필요가 없다면 스스로 삭제 시키는 기능 까지 있습니다.
예를 보여 드리면요
TTypedList<TAnObject*> Obj_List = new TTypedList<TAnObject>(true);//-> true는 자동 삭제 한다는 설정입니다.
// 기본적으로 false가 기본이고요, false일시에는 자동 삭제를 수행하지 않습니다.
for ( int i = 0 ; i < 10 ; i ++ )
{
TAnObject* obj = new TAnObject;
Obj_List->Add(Obj);
}
for ( int i = 0 ; i < Obj_List->Count ; i ++ )
{
TAnObject* obj = Obj_List->Items[i]; // 이부분이 저는 젤 맘에 드네요 명시적인 타입 캐스팅이 필요 없다는점.
// Do it
}
Obj_List->Clear(); // Clear 메소드 호출시 자동 삭제 옵션이 True이면 내부 객체를 자동으로 지웁니다.
delete Obj_List;
다만 TTypedList 의 단점은 Template을 이용하기 때문에 전체적을 컴파일 속도의 저하가 생깁니다.
이것 저것 테스트 해보신후에 사용에 대한 판단을 해주세요
|