* 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?