|
김백일 님이 쓰신 글 :
: ㄴ('')ㄱ 님이 쓰신 글 :
: : c++ 빌더를 공부하기 시작한 초보입니다...
: : 근데 공부하는 중에... 너무너무 궁금한게.. 몇가지 생겼어요...
: :
: :
: : TStringList 하고 TList는 머가 틀리죠?
:
: TStringList는 AnsiString의 리스트고요,
: TList는 void*의 리스트입니다.
: 그러니까 어떤 객체의 포인터도 대입해서 리스트를 만들 수 있지요.
: 단 매번 사용할 때마다 객체의 메모리를 할당하고 해제해야 하며,
: 원래 객체의 포인터로 캐스팅을 해야하기
: 때문에 코드도 지저분해지고, 실수할 가능성도 높습니다.
: 개인적으로는 STL의 list나 vector등을 쓰시는 것을 추천합니다.
:
: : variant는 어떤 타입을 받아들일수도 있고, 어떤 타입으로도 표현될수 있다고 들었어요
: : 그 내부구조 알수 없을까요?
:
: 내부구조까지는 정확히는 모르겠구요(알 필요도 없습니다.).
: variant라는 것은 (비쥬얼)베이직을 써 보신 분은 잘 아실 겁니다.
: 원래 인터프리터 언어인 베이직은 명시적으로 타입을 선언하지 않고도
: 변수를 쓸 수 있는데, 이 때의 타입이 variant입니다.
: 그러나 이렇게 명시적으로 타입을 선언하지 않고 변수를 아무렇게나 대입해서
: 쓰게 되면 속도도 느려질 뿐만 아니라, 골치아픈 버그가 생기게 되기 마련이지요.
: (앞의 TList 설명에서 void*를 다룰 때 생길 수 있는 버그와도 비슷한 맥락이지요.)
: variant는 OLE Automaton을 다룰 때 빼고는 절대 쓰지 않는 것이 좋습니다.
: 비쥬얼 베이직을 최우선시하는 M$ 때문에 할 수 없이 다른 언어에서도 OLE를 쓰기 위해
: variant를 도입하게 된 겁니다.
:
: : currency 는 도대체 어떻게 구현이 되어있길래 19자리~ 20자리 수까지도 표현이 가능
: : 한거죠?
:
: Currency는 소수점이 4자리로 고정된 실수입니다. 사실상 정수형 타입이죠.
: 즉, __int64 (델파이에서는 Int64)라는 64비트 정수형을 변환한 타입입니다.
: 2^64 = 1.8E19 가 되므로 십진수로는 19~20자리 수까지 표현되는 겁니다.
:
:
: :
: : 아시는분 꼭좀 가르쳐주세요.....
|