August 06, 2007Re: Hijacking
Posted in reply to Walter Bright
Reply to Walter, > 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>. > > Mitigating factors are private and final methods cannot be overridden. > How hard would it be to put a command line flag on the 2.0 version that would turn it on?