Encapsulation
Bundling data and methods; controlling access to internal state.
Inheritance
Deriving a class from another to reuse/extend functionality.
Polymorphism
Ability for objects to take many forms; typically via virtual functions.
Abstraction
Hiding implementation details behind a defined interface.
Composition
Building classes by including instances of other classes rather than inheriting.
RAII
(Resource Acquisition Is Initialization)
resource lifetime is tied to object lifetime for deterministic cleanup
PIMPL
(Pointer to Implementation)
Hiding implementation details to reduce compile-time dependencies.
unique_ptr
exclusive ownership of a resource
shared_ptr
reference-counted shared ownership
weak_ptr
non-owning reference to a shared pointer
Value Semantics
Object copies own their data independently.
Reference Semantics
Objects refer to shared data rather than copying.
Copy Semantics
Creates a new object as a duplicate of an existing object
Move Semantics
Transfers ownership of resources from one object to another without duplicating them
Deep Copy
Copying all object data recursively.
Shallow Copy
Copying only references/pointers, not owned data.
Constructor
function of a class that is automatically called when an object is created
Destructor
function called automatically when an object goes out of scope or is deleted
Overloading
Defining multiple functions/operators with the same name but different parameters.
Explicit
Forces the conversion of one type to another to be done manually
Implicit
compiler automatically converts one type to another when needed
Immutable
Data that cannot be changed after creation
Mutable
Data marked as this can be modified even inside const member functions
Lambdas
Inline anonymous functions with optional captures.