>>580 a := b;としたらAdjust(a);が呼ばれる。 例えば中にポインタがあったりして、その中身まで複写しないと いけないようなケースでコピー後の調整を行うのがAdjust。 全部コピーして回るC++のコピーコンストラクタとはちょと違う。
type a is new Controlled with record x : access Work_Area; y: Integer; end; procedure initialize(obj:in out x) is begin obj.x := new Work_Area; end; procedure Free is new Unchecked_Deallocate(...); procedure finalize(obj:in out x) is begin Free(obj.x); end; とすると必要なAdjustは procedure adjust(obj:in out x) is begin obj.x := new Work_Area'(obj.x.all); end;