简介
Override是C++里的一个关键字,意思是覆盖,用途是让编译器在编译期间检查并放置子类对父类虚函数产生重载
用途
代码示例:
class father {public:virtual int add(int a, int b);
};class son: public father {public:int add() { return 0; };
};
上述代码是没有使用override关键字声明父类add的情况,子类重写了父类的虚函数add,但是参数不匹配,c++不会报错,会认为这是一个重载函数。
一般当父类具有虚函数时,子类是不会写重名的函数的,即便是重载,因为这样容易混淆,如果是自己开发的话也应该注意这一点,这样会降低阅读性,有时在大型项目中多重继承下,开发者不知道父类有这么一个虚函数,故而在继承时写了重名函数,C++为了解决这一个问题在ISO 11标准里引入了override关键字,父类在虚函数里写上这个关键字,在构建时编译器就会检查子类是否正确覆盖父类的虚函数,如果有类型、参数不匹配都会报错。
修正后代码:
class father {public:virtual int add(int a, int b) override;
};class son: public father {public:int add() { return 0; };
};
构建时报错:
test.cpp:5:21: error: ‘virtual int father::add(int, int)’ marked ‘override’, but does not override5 | virtual int add (int a, int b) override;