views:

43

answers:

2

Basically, I want the C# compiler functionality of its override keyword in my C++ code.

class Base
{
   virtual int foo(int) const;
};

class Derived : public Base
{
   virtual int foo(int); // wanted to override Base, but forgot to declare it const
};

As we all know, the above code will compile fine, but yield some strange runtime behavior. I would love my C++ compiler to catch my poor implementation with something like C#'s override keyword. Are there any keywords like "override" being introduced into C++, or are we stuck with #define override virtual to show our intent??? (actually, I do not do this - I hate using the preprossor to "extend" the language).

+3  A: 

As far I know, this is not possible with the current standard. You can do it in the upcoming C++0x. See here for more details: Explicit virtual function overrides

Naveen
Each time I discover something about C++0x I find the syntax uglier and uglier... Surely it's just me right?
dreamlax
+1: see my comment on "answered" qeustion
franji1
A: 

If you can't wait for C++0x, Visual C++ already has this override keyword. (Since 2005 I believe). There the syntax is:

virtual int foo(int) override;

You're not obliged to type it, however. And its a non-standard microsoft extension.

jdv
apologies to Naveen - yours is the correct "future" answer; however, for my current needs (I use VS2005), this works!! I tagged this answer as "answering" my question, but +1 Naveen's answer
franji1