Junior — Middle
Hogyan lehet megakadályozni egy osztály példányainak létrehozását dinamikus memóriában?
sobes.tech MI
Válasz az MI-től
Чтобы запретить создание экземпляров класса в динамической памяти (через new), можно сделать оператор new приватным или удалить его объявление.
Пример на C++:
class MyClass {
public:
MyClass() {}
// запрет создания в динамической памяти
void* operator new(size_t) = delete;
void operator delete(void*) = delete;
};
int main() {
MyClass obj; // OK, на стеке
// MyClass* p = new MyClass(); // Ошибка компиляции
}
Таким образом, объекты можно создавать только на стеке или как статические, но не через new.