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

virtual inline функция-член каласса - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
18.03.2012, 22:11     virtual inline функция-член каласса #1
Возможно ли сочтание модификаторов virtual и inline для функции-члена каласса?
Почему?
И может ли реальная функция быть таковой: виртуальной и встроенной? Или inline будет проигнорировано?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 22:11     virtual inline функция-член каласса
Посмотрите здесь:

C++ Член-функция класса не работает
C++ inline функции vs инструкции inline функций
C++ Функция-член шаблонного класса
C++ Первый класс. Функция-член
C++ Не функция-член класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.03.2012, 22:42     virtual inline функция-член каласса #2
Возможно. Потому что inline - рекомендация компилятору, что-то вроде "я тут подумал, а не встроить ли нам эту функцию? Но окончательное решение оставляю за тобой, уважаемый компилятор".
По логике вещей должно игнорироваться, потому что выходи противоречие: решение о том, какой реально код должен выполниться, для виртуальных функций происходит на момент исполнения программы, а встраиваться функция может только во время компиляции. Но кто знает, что там решит умный компилятор? Вдруг он определит, что динамическое связывание не очень-то и надо, отбросит его а очередная оптимизация (они выполняются как бы волнами) может и встроить такую функцию. Но это гадание на кофейной гуще, либо это всё прописано в стандарте (смотреть сильно лень), либо зависит только от изощрённости разработчиков оптимизирующего компилятора. Чисто логически виртуальная функция не должна встраиваться.
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
18.03.2012, 22:50  [ТС]     virtual inline функция-член каласса #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
inline - рекомендация компилятору
Т.о. комбинация inline + virtual + =0 также возможна (с точки зрения синтаксиса), хотя и бессмыслена. Так?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.03.2012, 22:54     virtual inline функция-член каласса #4
Konstantin_D, да, проверка показала, что возможно даже такое, но на это компилятор уже выдаёт предупреждение (однако смущает его не само сочетание virtual + inline + = 0, а то, что встраиваемая функция нигде не определяется). Код работает без ошибок. Вы, кстати, и сами могли бы написать тестовый код и проверить всё это.
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
18.03.2012, 23:05  [ТС]     virtual inline функция-член каласса #5
У меня установлен VS 2003. Он такое допускает и меня это насторожило. С другими компиляторами не работал. Сомневаюсь, что VS 2003 - эталон стандарта C++. Огромное спасибо за то, что помогли.
Yandex
Объявления
18.03.2012, 23:05     virtual inline функция-член каласса
Ответ Создать тему
Опции темы

Текущее время: 09:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru