Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Пустые классы... 29.07.05 15:48 Число просмотров: 1464
Автор: void <Grebnev Valery> Статус: Elderman
|
>>>.... Пустые классы
> запрещены.
Кем? Это стандарт языка?
> После добавления хоть одного члена (или > виртуальной функции) класс становится не пустым и этот > неименованный заполнитель можно убирать.
Не совсем точно. Не обязательно виртуальной. Класс уже не пуст, если присутствует любая функция.
Кстати класс может быть не пустым даже в том случае, если он не содержит никаких членов (переменных или функций), а содержит только модификаторы доступа к членам базового класса.
> Если ТОЧНО нет и не будет виртуальных функций (и как > следствие RTTI) и виртуального наследования, то можно > заполнять нулями. В пустом классе есть неименованное > поле-заполнитель. Его можно обнулять без зазрения совести
Ну это понятно ;)
>>> Никакой ошибки.
> > > " .... Only the non-virtual > data members occupy space in > > each instance. " > > (Visual C and C++ (General) Technical Articles. C++: > Under > > the Hood)
Как раз здесь ошибка. Поскольку фунция - тоже мембер.
> Я так понимаю, виртуальные члены-данные это члены классов, > отнаследованные виртуально. Члены-данные виртуального > базового класса входят в любой класс только один раз, > независимо от того, сколько раз этот базовый класс был > отнаследован. Так что все правильно
Поясни, что ты имеешь ввиду. Виртуальное наследованиефункций- это виртуальное наследование. Не виртуальное - наследование не виртуальных функций. О каких виртуальныхчленах-данныхты говоришь?
> Не только она. Еще и таблица базовых классов vbase > (используется для RTTI), если включена RTTI
Верное и полезное уточнение.
Спасибо.
|
|
|