Re: Legal to override same function in different bases?
* Old Wolf:
Is the following code well-defined, and outputs foo twice?
#include <iostream>
struct Base1 { virtual void foo() = 0; };
struct Base2 { virtual void foo() = 0; };
struct Derived: Base1, Base2
{
void foo() { std::cout << "foo" << std::endl; }
};
int main()
{
Derived d;
Base1 *b1 = &d;
Base2 *b2 = &d;
b1->foo(); b2->foo();
}
Except for the issue of also including <ostream> (AFAIUI now resolved in
favor of not needed), yes.
Just to be sure I didn't overlook any speling mstake or such I ran the
code through Comeau Online and it compiled fine.
Given that there are no trivial mistakes in spelling and so on, the
effect of overriding in multiple bases is well-defined. However, that
makes it problematic to not override. In order to override some but not
all foo's it's necessary to introduce intermediate classes.
Cheers, & hth.,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?