23.1 — Object relationships

Life is full of recurring patterns, relationships, and hierarchies between objects. By exploring and understanding these, we can gain insight into how real-life objects behave, enhancing our understanding of those objects. For example, let’s say one day you’re walking down the street, and you see a bright yellow object attached …

21.3 — Overloading operators using normal functions

In the previous lesson, we overloaded operator+ as a friend function: #include <iostream> class Cents { private: int m_cents{}; public: Cents(int cents) : m_cents{ cents } {} // add Cents + Cents using a friend function friend Cents operator+(const Cents& c1, const Cents& c2); int getCents() const { return m_cents; …

2.12 — Header guards

In lesson , we noted that a variable or function identifier can only have one definition (the one definition rule). Thus, a program that defines a variable identifier more than once will cause a compile error: int main() { int x; // this is a definition for variable x int …