[fpc-devel] Pointer cache for fast class/pointer access.
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Wed Jan 4 19:14:35 CET 2012
Sven Barth schrieb:
>> And, as somebody asked, what the advantages (performance?) using
>> Object instead Class?
>
> They are basically similar to "records with methods" (which we now have
> as well...) if you use them directly (this means: not as pointer types):
> they are located on the stack and nested objects are part of the memory
> structure of the object.
To clarify "nested": object types can inherit from other objects, like
TObject can do - that's an advantage over records. They even can emulate
multiple inheritance, because (as you pointed out) contained objects
become part of the composed object, do not reside in a different (heap)
area.
> But if you use references to objects you work
> more like with classes as you have constructors, virtual methods and the
> objects are then located on the heap (thus you need to care for the
> memory management yourself).
Objects with virtual methods must not necessarily reside in the heap. A
VMT reference is inserted into the object, as soon as the first virtual
method is added. This leads to VMT pointers which do not reside at the
begin of the instance memory, similar to interface references. OTOH the
VMT (classtype!) reference at the begin of *every* TObject allows for
"is" and "as" operators (RTTI).
DoDi
More information about the fpc-devel
mailing list