Полагаю, ваш класс выглядит следующим образом.
class Bar {
Foo* foo;
...
}
Чтобы сделать глубокое копирование, вам необходимо создать копию объекта, на который ссылается bar.foo. В C ++ вы делаете это, просто используя оператор new
для вызова конструктора копирования класса Foo:
Bar(const Bar & bar)
{
this.foo = new Foo(*(bar.foo));
}
Примечание: это решение делегирует решение о том, делает ли конструктор копирования новый Foo (constFoo &) также "глубокую копию" для реализации класса Foo ... для простоты мы предполагаем, что это делает «правильная вещь»!
[Замечание ... вопрос в том виде, в котором он написан, очень запутан - он запрашивает «значение указателя скопированного объекта», которое не похоже на глубокую копию для меня: звучит как мелкая копия, то есть это.
Bar(const Bar & bar)
{
this.foo = bar.foo;
}
Я предполагаю, что это просто невинная путаница со стороны спрашивающего, а глубокая копия - это то, что нужно.]