Difference between revisions of "Template:Object Types"

From Free Pascal wiki
Jump to navigationJump to search
m (Adding links)
m
 
(6 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
! Feature
 
! Feature
 
! [[Record]]
 
! [[Record]]
 +
! [[Record#Advanced_record|Adv Record]]
 
! [[Object]]
 
! [[Object]]
 
! [[Class]]
 
! [[Class]]
 
|-
 
|-
 
| Encapsulation (combining data and methods + hiding visibility)
 
| Encapsulation (combining data and methods + hiding visibility)
 +
| No
 
| Yes
 
| Yes
 
| Yes
 
| Yes
Line 12: Line 14:
 
|-
 
|-
 
| [[Inherited|Inheritance]]
 
| [[Inherited|Inheritance]]
 +
| No
 
| No
 
| No
 
| Yes
 
| Yes
 
| Yes
 
| Yes
 
|-
 
|-
| Class constrcutor and destrutor
+
| Class constructor and destructor
 +
| No
 
| Yes
 
| Yes
 
| Yes
 
| Yes
Line 22: Line 26:
 
|-
 
|-
 
| Polymorphism (virtual methods)
 
| Polymorphism (virtual methods)
 +
| No
 
| No
 
| No
 
| Yes
 
| Yes
Line 27: Line 32:
 
|-
 
|-
 
| Memory allocation
 
| Memory allocation
 +
| Stack
 
| Stack
 
| Stack
| Stack
+
| Stack  
| Heap
+
| Heap (Only)
 +
|-
 +
|
 +
:Setting fields to zero on allocation
 +
| Managed Types only
 +
| Managed Types only
 +
| Managed Types only
 +
| All fields
 +
|-
 +
|
 +
:Default() function returns a constant with
 +
| all fields zeros
 +
| all fields zeros
 +
| all fields zeros
 +
| returns nil
 
|-
 
|-
 
| Operator overload (global)
 
| Operator overload (global)
 +
| No
 
| Yes
 
| Yes
 
| Yes
 
| Yes
Line 37: Line 58:
 
|-
 
|-
 
| Operator overload (in type only)
 
| Operator overload (in type only)
 +
| No
 
| Yes
 
| Yes
 
| No
 
| No
Line 42: Line 64:
 
|-
 
|-
 
| Type helpers
 
| Type helpers
 +
| No
 
| Yes
 
| Yes
 
| No
 
| No
Line 47: Line 70:
 
|-
 
|-
 
| Virtual constructors, class reference
 
| Virtual constructors, class reference
 +
| No
 
| No
 
| No
 
| No
 
| No
 
| Yes
 
| Yes
 
|-
 
|-
| Variant part (case) as c++ union
+
| Variant part (case) as c/c++ union
 +
| Yes
 
| Yes
 
| Yes
 
| No
 
| No
Line 57: Line 82:
 
|-
 
|-
 
| Bitpacked (really packing)
 
| Bitpacked (really packing)
 +
| Yes
 
| Yes
 
| Yes
 
| No
 
| No

Latest revision as of 20:50, 18 February 2021

Feature Record Adv Record Object Class
Encapsulation (combining data and methods + hiding visibility) No Yes Yes Yes
Inheritance No No Yes Yes
Class constructor and destructor No Yes Yes Yes
Polymorphism (virtual methods) No No Yes Yes
Memory allocation Stack Stack Stack Heap (Only)
Setting fields to zero on allocation
Managed Types only Managed Types only Managed Types only All fields
Default() function returns a constant with
all fields zeros all fields zeros all fields zeros returns nil
Operator overload (global) No Yes Yes Yes
Operator overload (in type only) No Yes No No
Type helpers No Yes No Yes
Virtual constructors, class reference No No No Yes
Variant part (case) as c/c++ union Yes Yes No No
Bitpacked (really packing) Yes Yes No No

Modified from https://forum.lazarus.freepascal.org/index.php/topic,30686.30.html (original author: ASerge).