Re: Covariant return types doesn't work (with g++ 4.1.2)
* Thomas J. Gritzan:
mr.xiaofan.li@gmail.com wrote:
class virt_base
{
[...]
virtual virt_base* cut()
{
return new virt_base();
}
[...]
};
class virt_derived
: public virt_base
{
[...]
virtual virt_derived* cut()
{
return new virt_derived();
}
[...]
};
The covariant return type lets you override a function with a more
strict function, i.e. a function returning a derived type. However, type
checking is done at compile time, so your compiler has to know, that the
object you are calling cut() on is a virt_derived.
int main()
{
virt_base* my_virt_derived = new virt_derived();
Change this to
virt_derived* my_virt_derived = new virt_derived();
That would make the code compile, but would defeat the pupose of the code.
Cheers,
- 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?