Частное наследование может иметь немного больше смысла для этого, поскольку частное наследование является более или менее способом реализации композиции. однако, если нет необходимости наследовать от Mutex
(например, если Mutex
имеет защищенных членов, к которым необходимо получить доступ), я думаю, что более стандартный композиционный подход, делающий его членом, вероятно, вызовет меньше путаницы (как у людей интересно, почему наследование было использовано вместо Mutex
члена).
Одна ситуация, в которой может иметь смысл публичное наследование, - это когда вы хотите, чтобы клиенты могли по какой-то причине иметь возможность блокировать этот объект, тогда они могут просто трактовать MyClass
как Mutex
. Это может быть не лучшим выбором для дизайна, поскольку вы открываете больше возможностей для тупиковой ситуации, если объект заблокирован непредвиденными способами. Если Mutex
остается закрытым (по наследованию или по стандартной композиции), класс может быть более уверен в том, как именно используется блокировка.
Я бы не удивился, если бы человек, который представил этот дизайн, находился под влиянием .NET, где любой объект «блокируется». Обратите внимание, что в .NET раньше он был общим для lock(this)
, но эта идиома впала в немилость, и теперь считается более правильным иметь конкретный член частного объекта, который будет использоваться для блокировки.