Здравствуйте, so5team, Вы писали:
S>Так что еще раз: А каким боком виртуальность функций к целому или не целому объекту?
Если у вас есть указатель на базовый объект, то этот указатель указывает только на часть объекта, а не на весь (целый) объект. Чтобы добраться до целого объекта можно использовать виртуальные методы, тогда (внутри метода) будет доступна та часть объекта, которая видна для типа, где этот виртуальный метод определён.
Допустим у нас есть два типа C и B. Вы можете выделить общую часть и положить её в A, затем отнаследовать C и B от А, добавить виртуальные методы. Но как вы это будете использовать?
Так:?
void fun()
{
C c;
B b;
c.my_virtual_method();
b.my_virtual_method();
}
S>>>Есть ощущение, что вам матчасть нужно сперва подучить.
BFE>>Это иллюзия.
S>Вы себе сильно льстите.
Не так сильно, как вы думаете. У меня
рейтинг 46, а у вас 58.
S>Вот и получается, что отсутствие динамической памяти вообще никак не превращает современный C++ в Си с классами. Поэтому у вас в исходном утверждении ошибка. Что и определяет все последующие заблуждения.
Вообще-то я такого не утверждал.
S>>>Так у вас если нет динамической памяти и исключений не будет.
BFE>>Это почему вы так думаете? Насколько я помню стандарт, память под исключения выделяется особым образом. Вроде бы implementation defined.
S>Потому что в распространенных реализациях память для исключений гарантированно есть только под bad_alloc. Остальные объекты исключений размещаются в хипе. Что и делает возможным существование exception_ptr, который для исключений работает как умный указатель.
S>Соответственно, если у вас нет динамической аллокации, то и исключений, скорее всего, не будет.
Что ж. Ещё один аргумент против исключений.

Т.е. получается С++ без исключений, без контейнеров, без умных указателей. И это следствие только одного требования.