<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">   The right thing should be the default.<br></div><div class="im">
But I fundamentally disagree your choice is 'right'..<br>
</div></blockquote>
<br>
Sure.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is obviously subjective, so I don't think that's a fair assertion.<br>
</blockquote>
<br></div>
By 'right', I don't necessarily mean 'the most efficient'. I mean that the code should be correct. It's ok if extra work is involved in creating the most efficient version.</blockquote><div><br></div>
</div><div>But this solution is equally correct, and doesn't make any sacrifice for the most efficient version:</div><div>  methods are not virtual by default.</div><div>  overriding any common method is an error (great, now I know if I've made any sort of mistake)</div>
<div>  a method declared virtual may be overridden expected, and virtual-ness safely confirmed by the lack of compile error.</div><div>  to override a regular method (a rare thing to do, but still your primary safety concern), you use an explicit keyword to do it. now it's absolutely intentional.</div>
<div><br></div><div>This provides all the same safety guarantees, ie, your 'right'-ness, and doesn't sacrifice: performance/false-virtual risk, 'final' keyword spam, risk of forgetfulness and the junior coder factor... surely this is MORE 'right', by any measure? :)</div>