Difference between revisions of "Template:Object Types"
From Lazarus wiki
Jump to navigationJump to searchJwdietrich (talk | contribs) (Adding reference.) |
m |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
|- | |- | ||
! Feature | ! Feature | ||
− | ! Record | + | ! [[Record]] |
− | ! Object | + | ! [[Record#Advanced_record|Adv Record]] |
− | ! Class | + | ! [[Object]] |
+ | ! [[Class]] | ||
|- | |- | ||
| Encapsulation (combining data and methods + hiding visibility) | | Encapsulation (combining data and methods + hiding visibility) | ||
+ | | No | ||
| Yes | | Yes | ||
| Yes | | Yes | ||
| Yes | | Yes | ||
|- | |- | ||
− | | Inheritance | + | | [[Inherited|Inheritance]] |
+ | | No | ||
| No | | No | ||
| Yes | | Yes | ||
| Yes | | Yes | ||
|- | |- | ||
− | | Class | + | | 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) |
|
Managed Types only | Managed Types only | Managed Types only | All fields |
|
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).