123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- unit uw22741a;
- {$mode objfpc}
- interface
- uses uw22741b;
- type
- iIO= interface
- procedure read;
- procedure write;
- end;
- tc= class(tInterfaceObject, iIO)
- procedure read; virtual;
- procedure write; virtual;
- destructor destroy; override;
- end;
- type
- td= class(tObject, iIO)
- ftc: tc;
- fiio: iIO;
- property io: tc read ftc implements iIO;
- constructor create; virtual;
- destructor destroy; override;
- end;
- implementation
- procedure tc.read; begin end;
- procedure tc.write; begin end;
- destructor tc.destroy;
- begin
- writeln('tc ', nativeuint(self), ' destroyed');
- inherited;
- end;
- constructor td.create;
- begin
- inherited;
- ftc:= tc.create;
- fiio:= ftc; // increace reference counter to one
- end;
- destructor td.destroy;
- begin
- fiio:= nil; // ftc is automatically destroyed
- ftc.free;
- writeln('td ', nativeuint(self), ' destroyed');
- inherited;
- end;
- end.
|