![]() |
|
Модераторы: Daevaorn Страницы: (9) Все « Первая ... 4 5 [6] 7 8 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
объявить можно (не чистым, а абстрактным
добавить реализацию . Ответный вопрос к Vyacheslav, является ли нижеупомянутый класс "чисто" абстрактным и по какой причине ?
Это сообщение отредактировал(а) mes - 12.11.2008, 23:40 |
||||||
|
|||||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
по мне, так ответ в духе "я не понимаю, о чем вы говорите" - приближает соискателя к провалу при этом, конечно не возбраняется употребление соискателем альтернативных терминов, но только если он сам понимает их значение Добавлено через 7 минут и 13 секунд абстрактными бывают классы а вот чистыми бывают виртуальные функции (pure-virtual) ну для начала вам надобно ввести определение "чисто" абстрактного класса |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
[
Буду. И формально в классе можно иметь не одну функцию с одним именем и одинаковым списком параметров, а четыре типа
Так что вопрос вполне корректен А вот ответ на второй вышел несколько натянутым. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
я вас чесгря не понимаю Добавлено через 3 минуты он формально причем - константность метода указывает на константность скрытого параметра - иначе это сделать невозможно, т.к. он скрытый именно поэтому не бывает константных функций не мемберов - там нечему быть константным |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ага, вот пример для определения к кому относится cоnst:
Это сообщение отредактировал(а) mes - 13.11.2008, 10:25 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
пример показал только константность this никто не требует именно передавать this в качестве параметра |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
вы уже 3-ю страницу спорите ни о чем
|
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Немного наоборот. Он здесь "причем" фактически, формально - непричем. В стандарте прописано, что сигнатуру входит cv-квалификаторы. То что они применимы только к методам класса - это тоже требование По стандарту 8.5.2 описание декларации функции(неважно какой) следущее D1 ( parameter-declaration-clause ) cv- qualifier(opt) exception-specifaction(opt) И я пока не нашел упоминание, что для function members в список параметров входит скрытый параметр( имеется в виду с точки зрения терминологии стандарта). Это примерно также, как объяснять поведение виртуальных функций посредством VMT. Только проблема в том, что стандарт описывает поведение виртуальных функций, а не VMT. VMT - это всего лишь конкретная реализация, которая выполнена так, что работа виртуальных функций отвечала требования стандарта, а не наоборот. Когда я просил поискать упоминание о сигнатуре( стандарта под рукой не было) я предполагал, что там окажется четкая фраза: типа " в сигнатуру входит список типов параметров, при этом для функции члена класса в этот список входит тип "указатель на класс-владелец", модифицированный в соответствии с cv-спецификатором, если он указан" А на самом деле они для разработчиков компиляторов оставили простор для творчества, указав только,что в сигнатуру входит cv спецификаторы. Если посмотрите 9.3.2 This pointer то там просто говорится, что в тип this модифицируется в соответствии с cv-спецификатором, если он есть и нигде не говорится, каким образом pointer попадает в функцию: через параметры первым параметром, последним или еще как. То есть я в принципе могу разработать компилятор, который параметры будет передавать через стек, указатель на this через регистр или при вызове методов буду записывать его в определеному адресу. Когда в С++ не было указателя на метод класса Страструп приводил такой пример
Но давал такой комментарий
С тех времен реализация не изменилась, но , если я не ошибаюсь, в стандарте требование передачи this первым параметром не застолбили, а следовательно возможны и другие реализации компиляторов. Добавлено @ 13:11 А с этим я согласен -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
method(i); это сокращенная запись от (*this).method(i); где this является таким же полноправным параметром как и i. запись теоритечески могла бы выглядить так method(*this).(i); или method(i).(*this); на случай если пугает положение скобок до имени функции.
слово "скрытый" к делу не относится - потому что оно действительно относится к способу передачи. Главное что this является параметром, что ИМХО следует из нижеуказанных абзацев.
Это сообщение отредактировал(а) mes - 13.11.2008, 16:44 |
||||||
|
|||||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
Vyacheslav, да все это было-бы правильно, если-бы я в первом посте, на который вы задали некорректный вопрос, не упомянул сигнатуру
Добавлено @ 19:06
неправда он не модифицируется - он "is" - cv-спецификатор в этом случае - это спецификатор this И НИЧЕГО ДРУГОГО!!! он больше ни для чего не нужен! формально, это спецификатор одного из параметров, который не участвует в списке параметров. И это так-же единственная причина, почему тип функции-не-мембера не может использоваться как тип функции-мембера!!! " If the member function is declared const, the type of this is const X*, ... " Это сообщение отредактировал(а) J0ker - 13.11.2008, 19:13 |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
При самой первой формулировке вопроса здесь я процитировал и воспользовался Вашим определением -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| warmonger_ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.7.2007 Где: г. Киев Репутация: 1 Всего: 3 |
первая страница форума интересна, потом - не понятно... споры...
давайте еще вопросов) --------------------
Make everything as simple as possible, but not simpler.Albert Einstein |
|||
|
||||
| J0ker |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
вы его вырвали из контекста единственное к чему тут можно придраться, так это упоминания класса в определении переопределения
данный вопрос некорректен - константность функции определяет константность одного из аргументов - каким образом этот аргумент попадает в функцию и как к нему происходит обращение рояля не играет - достаточно того, что аргумент присутствует Добавлено через 5 минут и 33 секунды
офтопиковый вопрос определить зацикленность односвязного списка (для начала) |
||||||
|
|||||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Спор стал бессмысленым
Можно простой вопрос Сколько параметров какого типа в методе A::func(int, int)? -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
static или обычная ? у static два int`а иначе два int`a и указатель на объект класса А (чтоб лучше представить: попобуйте вызвать ее, имея указатель на вашу не-статичную функцию и не имея аргументов для упомянутых выше параметров ) Это сообщение отредактировал(а) mes - 13.11.2008, 21:33 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |