Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Перегрузка new - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести два положительных числа. http://www.cyberforum.ru/cpp-beginners/thread98851.html
Помошите решить с объяснениями. Ввести два положительных числа. Найти наименьшее общее кратное этих чисел. Программа должна содержать рекурсивную функцию, которая находит наименьшее общее кратное.
C++ Написать функцию, которая создает файл, заполняя его случайными символами Помогите чайнику! В общем,задание вроде элементарное: "Написать функцию, которая создает файл, заполняя его случайными символоми, начиная с символа, заданного в параметре функции. Количество... http://www.cyberforum.ru/cpp-beginners/thread98847.html
Определить одномерный массив... C++
Помогите решить с объяснениями. Определить одномерный массив, состоящий и n вещественных чисел. Сразу при вводе массива упорядочить его в порядке возрастания (отдельную функцию сортировки не...
Разветвленные алгоритмы и программы C++
Добрый вечер. У меня проблемка с этой задачей: Автолюбитель выезжает из пункта А в пункт В, расстояние между которыми 300 километров. Через каждые 100 километров на трассе расположены заправки...
C++ Win32 vs CLR, какая технология предпочтительней? http://www.cyberforum.ru/cpp-beginners/thread98839.html
какая технология предпочтительней?
C++ Найти самое длинное и самое короткое слово в предложении Составить и отладить программу, которая выполняет следующие действия. В заданном тексте из нескольких предложений найти самое длинное и самое короткое слово. Если они принадлежат одному и тому же... подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
25.02.2010, 13:02
Цитата Сообщение от taras atavin Посмотреть сообщение
Память под экземпляры этого класса вообще не должна выделяться никуда, кроме его защищённых static-членов.
Вот как раз для этого и подойдет перегрузка new и delete:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
struct X
{
    X() {};
    ~X() {};
    static X* clone() { return new X; }
    static void destroy(X* obj) { delete obj; }
 
protected:
    void* operator new(size_t bytes) { return ::operator new(bytes); }
    void operator delete(void* p) { ::operator delete(p); }
};
 
int main()
{
  // это не скомпилируется:
  // X* px = new X;
  // delete px;
  
  // а вот это ок:
  X* px = X::clone();
  X::destroy(px);
 
  return 0;
}
Добавлено через 49 секунд
Ну и аналогично с new[] и delete[].
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru