为什么C++不提供override这个关键字呀?

王朝c/c++·作者佚名  2007-01-18
窄屏简体版  字體: |||超大  

class Parent {

public:

virtual void foo(int i=0) {

cout << "Parent::foo() " << i << endl;

}

};

class Son : public Parent {

public:

virtual void foo() {

cout << "Son::foo()" << endl;

}

};

C++里关于虚函数声明的语法,一直很让我很不舒服,一再提醒自己小心小心,结果今天还是出了问题。看左边的示例,最早在Parent类中的foo这个虚函数,是没有参数的,所以一切都工作得很好,昨天因为需要,就把Parent类的foo函数加上一个默认参数,这个时候,其实Son类中声明的foo函数已经与父类毫无关系了,两个函数各是各的,但编译器没有任何警告……

这个时候,就看出delphi和c#里override关键字的好处来了,有了这个关键字,一旦父类修改了虚函数,编译器立马可以给出警告来,总之,编译器应该能够防止程序员犯错误,尽最大可能地将这一切严谨化。

唉,看来用C++,一辈子也别指望会引入override关键字了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航