Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- С/С++
- Перегрузка оператора присваивания
- Пусть есть класс
- class Boo : public SuperBoo {
- Foo* fFoo1;
- Foo* fFoo2;
- // ...
- }
- Где Foo - мономорфный класс, а класс Boo владеет указателями fFoo1, fFoo2.
- Задача: перегрузить оператор присваивания для класса Boo.
- Я не понял семантического смысла задания. В зависимости от перевода слова “владение” видятся несколько вариантов.
- 1. Самый правильный - не делать этого, сделать конструктор копирования и перегруженный оператор = - закрытыми. Да и не хранить сырые указатели.
- 2. Если переводить “владение” как эксклюзивное владение - то нужен аналог std::auto_ptr или лучше uniq_pt, с инвалидацией источника копирования.
- 3. Глубокое копирование, как реализация перевода “владения” как независимого владения - проблема в том, что оно должно быть поддержано в Foo, если в Foo туе метода типа clone - то в приведенном случае я общего решения не вижу.
- 4. Владение, переведенное как “совместное владение” требует доступа к деструкторам выше по иерархии, считать ссылки и хранить их вне класса, на куче.
- Любой из 4 вариантов я готов реализовывать, если вы поясните лингвистический смысл задания.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement