Пфф :) Давайте еще подо все компайлеры ставить дефайны — вдруг в других придумали какие-то свои атрибуты или еще чего… Это IMHO не самый лучший вариант.
Я с таким успехом могу в компилятор натолкать таких фич, которые превратят C++ в другой язык (это я утрированно, но всё же).
Мне нужен переносимый код!
По-моему, WinFX — это кодовое название .NET Framework 3.
Если не ошибаюсь, Microsoft хотела, чтобы он пришел на замену Win API в новых ОС, начиная с Vista.
Вообще отловом подобных ошибок должен заниматься Lint (статический анализатор кода).
Однако я не уверен, что подобный анализатор для С++ создавать рентабельно — другое дело языки описания аппаратуры типа Verilog и VHDL.
За ссылки, конечно, спасибо.
Ну а полный FAQ писать в мои планы не входило. Я не собираюсь охватывать все аспекты языка, но в некоторые мне особенно хотелось бы углубиться. Думаю, если бы я, как Вы говорите, написал подобных статей штук триста, то получилась бы не Lite-версия… :)
На этом, пожалуй, и закончим спор, если, конечно, Вы не против.
Ну не знаю. Согласен, ошибка довольно часто встречается у новичков. Но я четко выделил «миф» — очень распространенное заблуждение о том, что функция становится виртуальной только на один уровень иерархии…
У него есть неоспоримый недостаток: он на английском. И если на Хабре английский язык многие знают, то «посторонние» читатели (а таких немало) — далеко не всегда.
> «Сколько не перечитывал, не понял именно так, как нужно. Ваши слова не перечат сказаному мной, но из них никак нельзя напрямую вычленить истину новичку, посему предлагаю немного дополнить этот самый момент».
Я вроде бы нигде не говорил слов «экземпляр» или «объект». Я четко и ясно написал, что таблица одна на класс. Давайте Вы попробуете перефразировать так, чтобы новичку было понятно, а я, если что, исправлю.
> «Но вот мифологический стиль действительно как-то режет глаз».
Ну нужно же как-то заинтересовать новичков — сухих мануалов и документаций по С++ много. Мне хотелось сделать название хоть немного «живым».
Я абсолютно согласен с тем, каким должен быть путь становления программиста С++. Но не каждый идет по «правильному пути». Можете считать, что именно для таких я и пишу.
> «Таблица виртуальный функций не создается одна на класс. Она создается не per instance, а per type, т.е. если вы создали 5 экземпляров класса B, то таблица будет одна, и сидит она в статической памяти. Сделано все это, для экономии памяти :)»
А разве я не это же самое сказал? Я специально подчеркнул, что каждый экземпляр класса содержит лишь указатель на таблицу виртуальных функций.
Хотя в некоторых частях boost был-таки…
Мне нужен переносимый код!
Если не ошибаюсь, Microsoft хотела, чтобы он пришел на замену Win API в новых ОС, начиная с Vista.
Однако я не уверен, что подобный анализатор для С++ создавать рентабельно — другое дело языки описания аппаратуры типа Verilog и VHDL.
Ну а полный FAQ писать в мои планы не входило. Я не собираюсь охватывать все аспекты языка, но в некоторые мне особенно хотелось бы углубиться. Думаю, если бы я, как Вы говорите, написал подобных статей штук триста, то получилась бы не Lite-версия… :)
На этом, пожалуй, и закончим спор, если, конечно, Вы не против.
Я вроде бы нигде не говорил слов «экземпляр» или «объект». Я четко и ясно написал, что таблица одна на класс. Давайте Вы попробуете перефразировать так, чтобы новичку было понятно, а я, если что, исправлю.
> «Но вот мифологический стиль действительно как-то режет глаз».
Ну нужно же как-то заинтересовать новичков — сухих мануалов и документаций по С++ много. Мне хотелось сделать название хоть немного «живым».
> «Таблица виртуальный функций не создается одна на класс. Она создается не per instance, а per type, т.е. если вы создали 5 экземпляров класса B, то таблица будет одна, и сидит она в статической памяти. Сделано все это, для экономии памяти :)»
А разве я не это же самое сказал? Я специально подчеркнул, что каждый экземпляр класса содержит лишь указатель на таблицу виртуальных функций.
P.S. Вам ли говорить про пафос? :)