Procedural programming language | Object-oriented programming language | Object-oriented programming language |
Does not support function overloading | Supports function overloading | Supports function overloading |
Does not support namespaces | Supports namespaces | Supports namespaces |
Does not support exception handling | Supports exception handling | Supports exception handling |
Does not support constructors and destructors | Supports constructors and destructors | Supports constructors and destructors |
Pointers can be used extensively | Pointers can be used but are not as necessary | Pointers are not used as extensively |
No support for templates | Supports templates for generic programming | Supports generics for generic programming |
No support for operator overloading | Supports operator overloading | Does not support operator overloading |
Only supports structured programming | Supports both structured and object-oriented programming | Supports both structured and object-oriented programming |
No support for references | Supports references for efficient parameter passing | Supports references for efficient parameter passing |