Рубрики

C ++ | Перегрузка оператора | Вопрос 10

Какая из следующих операторных функций не может быть глобальной, т. Е. Должна быть функцией-членом.
(A) новый
(B) удалить
(C) Оператор преобразования
(D) Все вышеперечисленное

Ответ: (с)
Объяснение: new и delete могут быть глобальными, см. Следующий пример.

#include #include #include   using namespace std;   class Myclass {     int x; public:     friend void* operator new(size_t size);     friend void operator delete(void*);     Myclass(int i) {         x = i;         cout << "Constructor called \n";     }     ~Myclass() { cout << "Destructor called \n"; } };     void* operator new(size_t size) {     void *storage = malloc(size);     cout << "new called \n";     return storage; }   void operator delete(void *p ) {     cout<<"delete called \n";     free(p); }   int main() {     Myclass *m = new Myclass(5);     delete m;     return 0; }

Тест на этот вопрос

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

C ++ | Перегрузка оператора | Вопрос 10

0.00 (0%) 0 votes