|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.06.2013, 15:09 | #1 |
Пользователь
Регистрация: 03.08.2009
Сообщений: 32
|
перегрузка оператора new
сигнатура оператора new :
Код:
размер size не указывается, и ошибка не вылезает, а во-вторых не преобразуется тип из void* в пользовательский? Вот что я имею ввиду стандартное использование: Код:
|
27.06.2013, 15:27 | #2 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
2. new возвращает void*, который преобразуется к типу целевого указателя 3. operator new не может быть методом класса. Он всегда является статическим, даже если при объявлении в классе, не указанно ключевое слово static |
|
27.06.2013, 15:28 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну как таковой просто new не есть вызов функции как всякие strlen(str) и тп.
это особый вызов, и он делает больше работы. перегрузка оператора new не перекладывает всю работу на вас. а лишь дает вам возможность самому выделить память, и возможно делать еще чтото. Код:
Код:
PS: долго писал(( Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.06.2013, 16:06 | #4 | |
Пользователь
Регистрация: 03.08.2009
Сообщений: 32
|
Цитата:
PS Вообще я решал эту задачу: Код:
Код:
|
|
27.06.2013, 16:21 | #5 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
у вас конструктор приватный как бы.
Цитата:
только это сишная вещь, ориентированная чисто на выделение памяти. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.06.2013, 16:39 | #6 | |
Пользователь
Регистрация: 03.08.2009
Сообщений: 32
|
Цитата:
PS Может есть другие предложения как решить задачу |
|
27.06.2013, 17:14 | #7 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Цитата:
Переопределенный operator new публичный. Вы можете запускать публичные методы, но не можете запускать приватный. Публичному методу класса доступны приватные методы этого же класса, поэтому, переопределенный operator new имеет доступ к конструктору своего класса. Поэтому, через operator new вы можете построить объект. Вообще, переопределение оператора new - очень щекотливая тема. У программиста должны быть очень веские причины, что бы так сделать. Ибо это источник трудно обнаружаемых и трудно понимаемых граблей. В данном случае, остается загадкой, чего именно добивается автор этого маловразумительного кода. Последний раз редактировалось _Bers; 27.06.2013 в 17:16. |
||
27.06.2013, 17:21 | #8 | |
Пользователь
Регистрация: 03.08.2009
Сообщений: 32
|
Цитата:
Вы читать посты выше не пробовали? Попробуйте! Там описана задачка которую надо решить. |
|
27.06.2013, 17:54 | #9 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Что то я попутал: Код:
Цитата:
Выше я нигде не вижу никакого описания задачки. |
||
27.06.2013, 19:58 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка оператора >> | Sektr63 | Общие вопросы C/C++ | 5 | 19.11.2012 01:51 |
c# перегрузка оператора * | world12_tk | Помощь студентам | 1 | 06.05.2012 01:04 |
перегрузка оператора ++ | nhr | Общие вопросы C/C++ | 1 | 04.05.2011 23:32 |
Перегрузка оператора + | Jane-sad | Помощь студентам | 0 | 05.10.2010 13:52 |
перегрузка оператора -> | alex_alpha | Общие вопросы C/C++ | 5 | 23.06.2010 19:07 |