Classes must be created using their constructor. Remember that a class is a pointer to an object,
so when a variable of some class is declared, the compiler just allocates a pointer, not the
entire object. The constructor of a class returns a pointer to an initialized instance
of the object. So, to initialize an instance of some class, one would do the following
:
ClassVar := ClassType.ConstructorName;
|
The extended syntax of new and dispose can be used to instantiate and destroy class
instances. That construct is reserved for use with objects only. Calling the constructor will
provoke a call to getmem, to allocate enough space to hold the class instance data. After
that, the constuctor's code is executed. The constructor has a pointer to it's data, in
self.
Remark:
- The f$PackRecords g directive also a ects classes. i.e. the alignment in memory of
the di erent elds depends on the value of the f$PackRecords g directive.
- Just as for objects and records, a packed class can be declared. This has the same e ect
as on an object, or record, namely that the elements are aligned on 1-byte boundaries.
i.e. as close as possible.
- SizeOf(class) will return 4, since a class is but a pointer to an object. To get the size
of the class instance data, use the TObject.InstanceSize method.