[fpc-pascal] operator overloading and counting references / creating / destoying anonymous instances

Sven Barth pascaldragon at googlemail.com
Fri Jul 29 13:55:29 CEST 2011


Am 29.07.2011 12:11, schrieb Mark Morgan Lloyd:
> Sven Barth wrote:
>> Am 28.07.2011 23:04, schrieb Mark Morgan Lloyd:
>>> I wonder if I could ask a silly question here, without displaying too
>>> much ignorance.
>>>
>>> I generally understand the significance of an interface in the Windows
>>> context, where COM (or whatever today's name for it) is integrated
>>> fairly deeply into the OS.
>>>
>>> But what of other OSes like Linux? Does the use of interfaces as a way
>>> of getting refcounted storage assume the presence of CORBA etc., and how
>>> much overhead is there at program startup- does it demand that an ORB be
>>> loaded into memory?
>>>
>>
>> While COM-interfaces in Delphi/FPC are designed to be Delphi
>> compatible, they do not rely on COM. Basically a IInterface or
>> IUnknown is simply an interface that contains calls for
>> increasing/releasing a reference count. You as the implementor of the
>> interface need to provide the implementation. So e.g.
>> TInterfacedObject which implements IInterface implements a reference
>> counting mechanism where the object is freed when the reference count
>> reaches zero. In FPC/Delphi this reference count is normally
>> controlled by the compiler by calling the methods of IUnknown, but in
>> C/C++ these calls need to be done manually (AFAIK).
>>
>> CORBA-interfaces as implemented by FPC are just plain interfaces
>> without any methods defined. Also the compiler does not generate code
>> to influence the reference count as it does with COM-interfaces.
>>
>> Basically an interface in FPC/Delphi is something that allows you to
>> use certain methods (those provided by the interface) without knowing
>> what the implementing class does. The COM-interface just contain a bit
>> more compiler magic, but that's it.
>>
>> So no, you don't need an ORB or something like that.
>>
>> Regards,
>> Sven
>>
>> PS: There is also a third kind of interfaces called dispinterface that
>> contain again more compiler magic and are indeed used with COM
>> automation (or XPCOM on non-Windows).
>
> So if I understand you correctly, use of interfaces does not imply use
> of OS or ORB facilities, but can permit it if required.
>

Simply spoken: yes (although I don't know of a CORBA ORB usage myself(!))

Regards,
Sven



More information about the fpc-pascal mailing list