The compiler has generated a copy constructor for us, and it could be written like this: Person(const Person& other) : age(other.age) // calls the copy constructor of the age { } So, when do we really need a user-defined copy constructor?
Компілятор створив конструктор копіювання для нас, і він може бути записаний так: Person(const Person& copy) : age(copy.age) {} Тобто, коли ж ми дійсно потребуємо користувачевого конструктора копіювання?