property 에 default 설정은 기본 값 설정으로 알고 있었다.
C++Builder 를 먼저 했으니 당연히 저렇게만 알고 있었는데...
Delphi 에는 조금 다른 이용이 가능하다.

  TStrings = class(TPersistent)
  public
    property Strings[Index: Integer]: string read Get write Put; default;
  end;

값 설정 없는 default 다.
저 경우
Str := TString.Create;
Str[0] := 'asdf';
와 같은 이용이 가능한 것이다.

C++ 에는 위의 방법이 안된다.
그런데... VCL 코드의 변환된 헤더를 살펴보니 연산자 중첩으로 해결해 놓은 것이다.

class DELPHICLASS TStrings;
class PASCALIMPLEMENTATION TStrings : public TPersistent
{
public:
    AnsiString operator[](int Index) { return Strings[Index]; }
    __property AnsiString Strings[int Index] = {read=Get, write=Put/*, default*/};
};

/*, default*/ 라는 눈속임의 주석...
어쨌든 코드의 동작은 똑같다.

+ Recent posts