Override Keyword (for virtual function) :
// C++ 03
class CAT {
virtual void A(int);
virtual void B() const;
}
class YellowCAT : public CAT {
virtual void A(float); // Created a new function
virtual void B(); // Created a new function
}
In C++, the intention of user was to override both function A and B, but since the function signature mismatch in function A and const keyword mismatch in function B. hence function A and B will not get override at run time.
// C++ 11
class CAT {
virtual void A(int);
virtual void B() const;
void C();
}
class YellowCAT : public CAT {
virtual void A(float) override; // Error: no function to override
virtual void B() override; // Error: no function to override
void C() override; // Error: not a virtual function
}
With override keyword, the above functions results an error message, as there is no such functions defined in base class.
// C++ 03
class CAT {
virtual void A(int);
virtual void B() const;
}
class YellowCAT : public CAT {
virtual void A(float); // Created a new function
virtual void B(); // Created a new function
}
In C++, the intention of user was to override both function A and B, but since the function signature mismatch in function A and const keyword mismatch in function B. hence function A and B will not get override at run time.
// C++ 11
class CAT {
virtual void A(int);
virtual void B() const;
void C();
}
class YellowCAT : public CAT {
virtual void A(float) override; // Error: no function to override
virtual void B() override; // Error: no function to override
void C() override; // Error: not a virtual function
}
With override keyword, the above functions results an error message, as there is no such functions defined in base class.
Comments
Post a Comment