У меня есть базовый класс, который выглядит примерно так ресурсы, занятые узлом (пожалуйста, игнорируйте тот факт, что это можно сделать с помощью деструкторов). Вызов любой из двух других функций после вызова delete()
вызывает исключение. Эти функции безопасно вызывать при одновременных рабочих нагрузках (при этом операции чтения являются тривиально безопасными, в то время как записи должны быть сериализованы через мьютекс, поток записи или что-то подобное)
Затем у меня есть реализация этого интерфейса, которая выставляется только как часть упорядоченной структуры данных - скажем, связанный список. Однако есть одно отличие в поведении описанного выше базового класса - когда мы вызываем delete для узла, он удаляет не только узел, но и все узлы перед ним.
Существует ли особый тип шаблона проектирования, который я могу использовать, чтобы показать разницу в поведении функции delete ()? Я мог бы, например, сказать в комментариях, что экземпляры могут самопроизвольно удаляться, и что пользователям нужна внешняя синхронизация (например, из реализации связанного списка), но не уверен, является ли это лучшим решением (возможно, какой-то запрос возможностей уместно здесь?).