Q&A

  • 클래스에대한 질문입니다.
바로아래꺼랑 비슷한 내용인데....^^

먼저 TLine라는 클래스를 만들고

그 클래스를 사용하기 위해 폼에서 다음과 같이 선언했습니다.



public

LineG5 : TLine;



그리고 LineG5를 실제로 사용하기전에 꼭

LineG5 := TLine.Create();

를 해줘야 되나요???



C++에서 처럼... 변수선언시 객체까지 만들어진게 아닌가요??

C++에서는 포인터를 선언했을때 new연산자를 사용하고.. 나중에 delete하잖아요.

델파이에서는 반드시 Create해야되는건지.. 아~~ 헷갈려..

그런데 버튼이나 라벨같은 컴포넌트는 Create안하고도 선언만 하고잘 쓰잖아여..

2  COMMENTS
  • Profile
    김일영 2001.10.24 10:35
    그렇습니다.



    Object Pascal은 개체를 참조(Reference)로 다루기 때문에

    변수를 선언했다고 해서 개체를 생성한 것은 아닙니다.

    개체는 반드시 명시적으로 생성해줘야 합니다.



    Form에다가 컴포넌트를 이것 저것 막 올려놓은것은

    코드에서 생성을 안 시켜줬는데 어떻게 쓸 수가 있는가?

    이렇게 의아해 하셨습니다만,



    Form의 생성자(TCustomForm.Create) 내에서

    컴포넌트들을 생성시켜주도록 되어 있어서 눈에 띄지 않는 것 뿐이지

    명시적으로 생성해줘야 하는 것임에는 틀림이 없습니다.



    수고하세요.





    드기 wrote:

    > 바로아래꺼랑 비슷한 내용인데....^^

    > 먼저 TLine라는 클래스를 만들고

    > 그 클래스를 사용하기 위해 폼에서 다음과 같이 선언했습니다.

    >

    > public

    > LineG5 : TLine;

    >

    > 그리고 LineG5를 실제로 사용하기전에 꼭

    > LineG5 := TLine.Create();

    > 를 해줘야 되나요???

    >

    > C++에서 처럼... 변수선언시 객체까지 만들어진게 아닌가요??

    > C++에서는 포인터를 선언했을때 new연산자를 사용하고.. 나중에 delete하잖아요.

    > 델파이에서는 반드시 Create해야되는건지.. 아~~ 헷갈려..

    > 그런데 버튼이나 라벨같은 컴포넌트는 Create안하고도 선언만 하고잘 쓰잖아여..

  • Profile
    드기 2001.10.24 21:10
    ^^