Аватар для Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283

Перегрузка new

18.05.2009, 21:48. Показов 2462. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет) возник такой вопрос:
есть класс
C++
1
2
3
4
5
class Temp
{
   private:
      T* pRC;
};
как перегрузить new?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2009, 21:48
Ответы с готовыми решениями:

Перегрузка в виде метода VS Перегрузка в виде функции друг
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

перегрузка >> и <<
Решил попробовать перегрузить операции ввода и вывода,почему то выводятся 0, вместо нужных значений,подскажите в чем косяк #include...

13
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
18.05.2009, 23:32
Это об этом?
C++
1
T* pRC=new T;
? чёто не понял,что спрашивалось ,хотя читал вроде)) не туда
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.05.2009, 23:36
Ты скажи конкретно, чего хочешь
Потму как подозреваю, что тебе конструктор нужно написать
0
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
18.05.2009, 23:48
Я так полагаю что то тыпо этого
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
28
29
30
31
32
33
34
35
36
#include <iostream>
 
using namespace std;
 
class Employee{
public:
    Employee():x(new int) {}
    ~Employee(){
        delete x;
    }
    void *operator new (size_t size){
        cout << " overload new " << endl;
        return ::operator new(size);
    }
 
    void operator delete(void *p,size_t size){
        cout << " overload delete " << endl;
        ::operator delete(p);
    }
 
    int *x;
};
 
 
 
int main()
{
    Employee *e = new Employee;
 
    *e->x = 10;
 
    cout << *e->x << endl;
    delete e;
 
    return 0;
}
2
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
19.05.2009, 06:08
Вы меня дико извините, конечно, но..
C++
1
2
3
4
        void *operator new (size_t size){
                cout << " overload new " << endl;
                return ::operator new(size);
        }
Почему пустая функция возвращает значение?
Может, так:
C++
1
2
3
4
        void *operator new (size_t size){
                cout << " overload new " << endl;
                ::operator new(size);
        }
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
19.05.2009, 08:21
Функция не пустая, она имеет тип void*
1
 Аватар для Бартимеус
181 / 33 / 7
Регистрация: 29.10.2008
Сообщений: 283
19.05.2009, 19:19  [ТС]
есть шаблонный класс который содержит указатель на чтото(на T). в этом классе должна быть функция new? которая создает в памяти этот самый объект и присваеват адрес указателю. Это все должно делаться не черезе конструктор (так бы я и сам смог), а через перегруженную new
0
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
30.04.2012, 15:24
Цитата Сообщение от ISergey Посмотреть сообщение
Employee():x(new int) {}
А что это означает? Причём здесь двоеточие?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.05.2012, 11:50
zzz_, список инициализации конструктора.
1
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
01.05.2012, 12:50
C++
1
x(new int)
означает что создается указатель типа int?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.05.2012, 12:51
zzz_, это означает, что выделится память под одну переменную типа int и указатель x инициализируется адресом этой памяти.
1
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
01.05.2012, 12:56
C++
1
2
3
4
void *operator new (size_t size){
        cout << " overload new " << endl;
        return ::operator new(size);
    }
А разве нельзя вернуть this?

C++
1
2
3
4
void operator delete(void *p,size_t size){
        cout << " overload delete " << endl;
        ::operator delete(p);
    }
C++
1
::operator delete(p)
А что эта строчка означает, почему не просто delete?

Добавлено через 1 минуту
И как будет выглядеть перегрузка если мы её вынесем за объявление класса?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.05.2012, 13:00
Цитата Сообщение от zzz_ Посмотреть сообщение
А разве нельзя вернуть this?
И чего вы этим добъётесь?

Цитата Сообщение от zzz_ Посмотреть сообщение
А что эта строчка означает, почему не просто delete?
Потому что просто delete вызовет бесконечную рекурсию. В данном случае вызывается глобальный оператор delete.
1
5 / 5 / 0
Регистрация: 08.05.2011
Сообщений: 215
01.05.2012, 13:23
Цитата Сообщение от silent_1991 Посмотреть сообщение
И чего вы этим добъётесь?
Ну я думал нужны ссылка на объект, который вызвал это, или не так?
А как будет выглядеть перегрузка, если её вынести за пределы класса? Я просто видел, что как-то так пишут.
C++
1
2
3
4
void& Employee :: operator new (size_t size){
        cout << " overload new " << endl;
        return ::operator new(size);
    }
Что к чему и верно ли это?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2012, 13:23
Помогаю со студенческими работами здесь

Перегрузка >>
Перегрузила оператор в соответствии с примером в документации std::istream &amp;operator&gt;&gt; (std::istream&amp; is, Worker&amp; dt); ...

Перегрузка
Собственно как? class MyClass { public int x {get; set;} public int y {get; set;} public MyClass() { ...

Перегрузка
Есть два файла: dop.py: class Konosuba: def __str__(self): return 'Эта программа, как и Аква - бесполезная' osn.py: ...

Перегрузка >>
Доброго времени суток. Есть учебный пример перегрузки операций &gt;&gt; и &lt;&lt;. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

перегрузка []
Есть класс, и почему компилятор выдает ошибку на функции int &amp;operator(int); #ifndef ARRAY1_H #define ARRAY1_H #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru