Здравствуйте, Павел Кузнецов, Вы писали:
j>> Есть просто вызов (всегда полиморфный для виртуальной функции) и вызов с явной j>> квалификацией (при этом нет вообще понятия "виртуальный" — так написано в Стандарте).
ПК>Ну почему же? В стандарте написано, что явная квалификация подавляет механизм виртуального вызова:
ПК>
10.3 Explicit qualification with the scope operator (5.1) suppresses the virtual call mechanism.
Это 'suppresses' я и имел в виду под 'нет вообще понятия "виртуальный"' :)
— Мужик, ты чего в ладоши хлопаешь?
— Крокодилов разгоняю!
— Так их же тут нет!
— Потому и нет, что разгоняю...
Re[3]: final overrider
От:
Аноним
Дата:
23.06.03 12:55
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:
[]
А кто вызовется в таком случае?
class A
{
public:
virtual void fun();
};
class A1
{
public:
virtual void fun();
};
class B:public A
{
public:
void fun();
};
class C:public A1
{
public:
};
class D:public B, public C
{
public:
using C::fun;
};
void g()
{
D d;
d.fun();
}
Здравствуйте, , Вы писали:
> А кто вызовется в таком случае? >
> class A {
> public:
> virtual void fun();
> class A1 {
> public:
> virtual void fun();
> class B:public A {
> public:
> void fun();
> class C:public A1 {
> class D:public B, public C {
> public:
> using C::fun;
> D d;
> d.fun();
>
A1::fun. Без "using C::fun;" в классе D была бы неоднозначность,
а так мы явно говорим, какую функцию следует вызывать.
Posted via RSDN NNTP Server 1.5 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Т.е. все, что говорилось в примере относилось к случаю вирт.функций из одного базового класса? (т.е. допустим класса А и его виртуальной функции fun независимо от числа подобъектов этого базового класса)?
Of course, the code must be complete enough to compile and link.