Sign in Join
Wiki copytemporary

Object

Deutsch · English · Français

Back to: data types | reserved words.

The reserved word object is used to construct complex data types that contain both functions, procedures and data. Object allows the user to perform Object-Oriented Programming (OOP). It is similar to class in the types it can create, but by default objects are created on the stack, while class data is created on the heap. However, object created types can be created on the heap by using the new procedure. Object was introduced in Turbo Pascal, while class was introduced in Delphi. Object is maintained for backward compatibility with Turbo Pascal and has largely been superseded by class.

Example skeleton of the creation of the data type object:

pascal
type
  TTest = object
  private
    { private declarations }
  public
    { public declarations }
  end;

Example skeleton of the create of a packed version of the data type object:

pascal
type
  TTest = packed object
  private
    { private declarations }
  public
    { public declarations }
  end;

Example with constructor and destructor:

pascal
type
   TTest = object
   private 
     {private declarations}
     total_errors : Integer;
   public
     {public declarations}
     constructor Init;
     destructor Done;
     procedure IncrementErrors;
     function GetTotalErrors : Integer;
   end;

procedure TTest.IncrementErrors;
begin
  Inc(total_errors);
end;
    
function TTest.GetTotalErrors : Integer;
begin
   GetTotalErrors := total_errors;
end;

constructor TTest.Init;
begin
  total_errors := 0;
end;

destructor TTest.Done;
begin
   WriteLn('Destructor not needed - nothing allocated on the heap');
end;

var
   error_counter: TTest;

begin
   error_counter.Init; // unlike C++, constructors must be explicitly called
   error_counter.IncrementErrors;
   error_counter.IncrementErrors;
   WriteLn('current errors:', error_counter.GetTotalErrors);
   error_counter.Done
end.

Output:
current errors:2
Destructor not needed - nothing allocated on the heap

Objects compared to other structured types

See Also


From the Free Pascal wiki, page "Object", as it stood on 2021-02-17 after a change by Jwdietrich, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.