У меня есть класс, содержащий набор атрибутов, которые я хочу, чтобы значения по умолчанию были получены из другого экземпляра (с именем parent).
Если у экземпляра нет родителя, ему назначаются значения по умолчанию.
Но если у экземпляра есть родительский объект, то я бы хотел, чтобы его атрибуты по умолчанию равнялись родительским атрибутам с ограничением , что если родительские атрибуты изменены, то атрибуты объекта также могут получить новое значение.
Учитывая это ограничение, я не могу просто скопировать значения из родительского.
Таким образом, я думаю, что у меня есть два метода:
- Использовать указатели: если указатель равен nullptr, тогда использовать родительское значение.
- Используйте поле bool для каждого атрибута, указывая статус.
Оба метода должны работать, но они также имеют неудобства:
- Для первого потребуется создание экземпляра вручную, даже если его можно упростить с помощью shared_ptr или unique_ptr. Но это приведет к дополнительным инструкциям, таким образом, более медленный код
- Второе приведет к дополнительному потреблению памяти: каждый экземпляр будет занимать как минимум еще один байт (чаще всего 2, 4 или даже 8 байт) на каждый атрибут.
Мой вопрос: Есть ли другой способ реализовать такое поведение? Или какое лучшее решение?