Для «правила нуля» я понимаю, что хочу разделить управление данными на простые классы, реализующие правило 3, правило 5, что угодно, чтобы более сложные классы могли использовать конструкторы, операторы присваивания и т. Д., как автоматически предоставляется.
Как это работает, когда член класса должен быть указателем из-за полиморфизма?
Например, предположим, у меня есть класс
class MyClass{
private:
s_array<int> mynumbers;
s_array<double> mydoubles;
Base * object;
...
};
Здесь Base
является базовым классом с несколькими производными классами, а object
может указывать на один из производных классов.Так что object
является указателем для получения полиморфизма.
Если бы не присутствие этого указателя Base
, я мог бы использовать правило нуля для MyClass
, предполагая s_array<>
правильно реализовано.Есть ли способ настроить все так, чтобы MyClass
мог использовать правило нуля, даже если объект является указателем?Поведение, которое я хочу при копировании, заключается в том, что новый экземпляр MyClass
получает указатель на новую копию object
.