Рубрики

C ++ | Разное C ++ | Вопрос 5

Как мы можем сделать класс C ++ таким, чтобы его объекты могли создаваться только с помощью оператора new?

Если пользователь пытается создать объект напрямую, программа выдает ошибку компилятора.
(А) невозможно
(B) Делая деструктор частным
(C) Сделав конструктор частным
(D) Делая и конструктор и деструктор приватным

Ответ: (Б)
Объяснение: см. Следующий пример.

// Objects of test can only be created using new
class Test
{
private:
    ~Test() {}
friend void destructTest(Test* );
};
 
// Only this function can destruct objects of Test
void destructTest(Test* ptr)
{
    delete ptr;
}
 
int main()
{
    // create an object
    Test *ptr = new Test;
 
    // destruct the object
    destructTest (ptr);
 
    return 0;
}

Смотрите http://espressocode.top/private-destructor/ для более подробной информации.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Разное C ++ | Вопрос 5

0.00 (0%) 0 votes