1. Объясните разницу между понятиямивиртуальная функцияивиртуальное наследование?
2. Объясните, чем отличаются глобальные статические функции от статических функций, членов классов?
1. Объясните разницу между понятиямивиртуальная функцияивиртуальное наследование?
2. Объясните, чем отличаются глобальные статические функции от статических функций, членов классов?
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
28 августа 2008 в 18:03
Виртуальную функцию базового класса тоже можно вызвать снаружи, если она public:
derived_ptr->base::foo();
Пользовался только однажды. И никому не советую это делать, а также позволять другим это делать…
28 августа 2008 в 10:03
2 #2,
Обычную функцию тоже можно переопределить в потомках класса. В таком случае:
derived_ptr->foo(); // вызов той фу, что определена в потомке
((base*) derived_ptr)->foo(); // вызов фу, кот. определена в базовом классе
Если бы foo() была виртуальной, то в обоих случаях вызывалась бы версия функции из класса-потомка
26 августа 2008 в 19:04
#5 не может быть. Глобальные статические функции доступны только в том модуле, где описаны, если только они не определены их в хедере. В этом случае каждый раз будет генериться новая копия функции.
26 августа 2008 в 16:03
#4, по крайней мере в VS они доступны из других модулей. Мне казалось что static использовался для внутренней компоновки только в старых компиляторах.
26 августа 2008 в 15:00
2 и еще областью видимости, пожалуй.
26 августа 2008 в 15:00
2. Статические функции находятся в рамках модуля и на линкер не передаются, т.е. она будет недоступна из других модулей
26 августа 2008 в 14:04
1. //www.devdoc.ru/index.php/content/view/virtual_...
виртуальное наследование – способ множественного наследования. виртуальная функция – вид функции которую можно переопределить в потомках.
2. пространством имен.