Одним из способов является создание конструкторов protected
.
Другим способом является создание деструктора и operator new
защиты.Публичный деструктор необходим для создания объектов со статическим и автоматическим сроком хранения, а также для delete
(но не для new
).
Пример:
struct X {
protected:
~X();
static void* operator new(size_t);
static void* operator new[](size_t);
};
int main() {
X x; // error: destructor is non-public.
X* p = new X; // error: operator new is non-public.
}