Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Для того, чтобы this указывал хоть на что-то. Пустые классы... 29.07.05 13:42 Число просмотров: 1302
Автор: amirul <Serge> Статус: The Elderman
|
> Компилятол VC для sizeof( a ) всегда вернёт единицу. > Впрочем, как вернёт единицу и для:
Для того, чтобы this указывал хоть на что-то. Пустые классы запрещены. После добавления хоть одного члена (или виртуальной функции) класс становится не пустым и этот неименованный заполнитель можно убирать.
> class b{ char ch; ); > > Т.е. sizeof(a) == 1 и sizeof(a) == 1 тоже. > > Таким образом,если_быи оставить вопрос о виртуальных > функциях (см. ниже) - всё равно не понятно что и куда > копировать.
Если ТОЧНО нет и не будет виртуальных функций (и как следствие RTTI) и виртуального наследования, то можно заполнять нулями. В пустом классе есть неименованное поле-заполнитель. Его можно обнулять без зазрения совести
> Ты здесь прав. На 100%. Хочу обратить твоё внимание, что MS > опять в своих статьях с этим, кажется облажалась. Они пишут >ошибочносовершенно обратное:
Никакой ошибки.
> " .... Only the non-virtual data members occupy space in > each instance. " > (Visual C and C++ (General) Technical Articles. C++: Under > the Hood)
> Хотя, конесно, английский сложный язык... Зависит от > контекста. Может я и не правильно читаю.
Я так понимаю, виртуальные члены-данные это члены классов, отнаследованные виртуально. Члены-данные виртуального базового класса входят в любой класс только один раз, независимо от того, сколько раз этот базовый класс был отнаследован. Так что все правильно
> Повторяю, ты прав с виртуальными функциями на 100%. (в > случае с виртуальными функциями, в ран тайм, появится > 32-битная скрытая от программера ссылка на vtbl, еслт > только не ошибаюсь)
Не только она. Еще и таблица базовых классов vbase (используется для RTTI), если включена RTTI
|
|
|