Hijacking

kris fu at bar.org
Mon Aug 6 01:09:00 PDT 2007


Walter Bright wrote:
> kris wrote:
> 
>> There's a related problem where a public method is added to a 
>> base-class A (as in your example) but where the signature is *exactly* 
>> that of one existing in derived class B. If A actually calls that new 
>> method internally, "bad things"tm will almost certainly happen, since 
>> B never intended to effectively override the newly-added method in A.
>>
>> This is a very hard problem to isolate yet can be easily remedied by 
>> the compiler. The request was first made two or three years back, and 
>> once or twice since then: you make the "override" keyword *required*.
>>
>> When "override" is required, the compiler can easily trap this related 
>> type of hijacking and avoid such nasty surprises.
> 
> 
> That is a good point. The reason I haven't added it is because I'm not 
> sure how annoying it will be to have to always add the 'override' 
> keyword. It might be one of those things like exception specifications 
> where everyone says it's a good idea but guiltily hate in secret <g>.

Let's put it this way: I have a personal and quite open dislike for 
exception specifications, yet I try very hard to ensure override is 
added in all the right places in D, even though the compiler doesn't 
enforce it.

In other words, I go to the trouble of adding override for the benefit 
of manual auditing. The compiler ought to be helping me with that task?

- Kris



More information about the Digitalmars-d mailing list