123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- { %VERSION=1.1 }
- {$mode objfpc}
- type
- to1 = class
- destructor destroy;override;
- procedure beforedestruction;override;
- end;
- to2 = class(to1)
- destructor destroy;override;
- procedure beforedestruction;override;
- end;
- var
- i : longint;
- destructor to1.destroy;
- begin
- writeln('to1.destroy');
- if i<>2000 then
- halt(1);
- i:=3000;
- inherited destroy;
- end;
- procedure to1.beforedestruction;
- begin
- writeln('to1.beforedestruction');
- if i<>1000 then
- halt(1);
- i:=2000;
- end;
- destructor to2.destroy;
- begin
- writeln('to2.destroy');
- if i<>4000 then
- halt(1);
- i:=2000;
- inherited destroy;
- i:=5000;
- end;
- procedure to2.beforedestruction;
- begin
- writeln('to2.beforedestruction');
- if i<>3000 then
- halt(1);
- i:=4000;
- end;
- var
- o1 : to1;
- o2 : to2;
- begin
- o1:=to1.create;
- o2:=to2.create;
- i:=1000;
- o1.destroy;
- o2.destroy;
- if i<>5000 then
- halt(1);
- writeln('ok');
- end.
|