일반 필드/변수
일반 필드/변수 (Normal fields/variables)
일반 필드를 선언하는 방법은 두 가지예요. 첫 번째는 객체에서 정의하는 것과 유사한 고전적인 방식이에요.
본문
{$mode objfpc}
type
cl=class
l : longint;
end;
var
cl1,cl2 : cl;
begin
cl1:=cl.create;
cl2:=cl.create;
cl1.l:=2;
writeln(cl1.l);
writeln(cl2.l);
end.
결과는 다음과 같아요.
2
0
이 예제는 필드 값이 0으로 초기화된다는 것을 보여줘요. (비순차 타입에서는 0에 해당하는 것, 즉 빈 문자열, 빈 배열 등으로 초기화돼요.)
두 번째 선언 방식은 var 블록을 사용하는 건데, 비교적 최근 버전의 Free Pascal에서만 쓸 수 있어요.
{$mode objfpc}
type
cl=class
var
l : longint;
end;
이 정의는 앞의 정의와 완전히 동일해요.
Remark: 컴파일러 3.0 버전부터, 정렬을 더 잘하고 인스턴스를 더 작게 만들 수 있다면 컴파일러가 필드를 메모리에서 재배열할 수 있어요. 즉 인스턴스에서 필드가 반드시 선언 순서대로 나타나지는 않아요. 클래스에 대해 생성된 RTTI는 이 변경을 반영할 거예요.
더 알아보기
클래스 필드는 선언 시 0(또는 그에 상응하는 값)으로 초기화된다는 점을 활용하면 안전한 기본값을 얻을 수 있어요.