Если у меня есть базовый класс со сложным элементом данных, скажем, char*
, и в конце моей цепочки наследования у меня есть другой класс с таким же типом DM, должен ли я реализовать CCTOR всех другие занятия в пути?
например:
Животный класс:
class Animal
{
int age;
char* name;
Animal() { ... }
Animal(const Animal &animal) { ..deep copying name..}
}
Класс млекопитающих:
class Mammal : public Animal
{
int height;
Mammal() { ... }
}
Лошадь Класс:
class Horse : public Mammal
{
char* color;
Horse() { ... }
Horse(const Horse &horse ) { ..deep copying color..}
}
Нужно ли реализовывать CCTOR в Mammal
, даже если в качестве элемента данных он содержит только int
?
В основном мой вопрос: при копировании сложного объекта (построенного из нескольких классов) компилятор активирует CCTOR каждой части отдельно?
Edit:
Чтобы было понятно, я хочу скопировать объект Horse
. Если я напишу свой код, как указано выше, его имя также будет скопировано?