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

原创 2006年05月22日 14:58:00
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关键字了。

相关文章推荐

C++ 中提供的override 关键字

C++ 语言标准这些年进化的很快,许多新引入的特性我都没有用过。说实话自己也比较懒,总是觉得自己对C++ 的掌握程度已经足够应付日常的各种项目了,所以没有学习新特性的动力。而且一直觉得新引入的特性多数...

c++的override关键字

我那个编译器里把override标蓝(表示那是系统关键字),它有什么用? 我知道【英语单词】override表示子类覆盖掉父类的方法,调用时会调用子类的方法;父类对应的方法已经用virtual修饰。...

C++ 11继承控制关键字:override(虚函数重载)和final(阻止继承、虚函数重载)

C++ 11添加了两个继承控制关键字:override和final。override确保在派生类中声明的重载函数跟基类的虚函数有相同的签名。final阻止类的进一步派生和虚函数的进一步重载。接下来让我...

C#中的一些方法修饰关键字virtual override sealed new

对于方法(属性、事件) 1. 如想重写(扩展和修改继承)方法要求有两个     a. 基类必须是virtual     b. 继承类型的同签名方法必须override也就是说基类和继承类都必须同...
  • henulwj
  • henulwj
  • 2012年08月17日 09:10
  • 757

C#关键字之override详解

重载、重写、覆写,分别指的是overload、override、new。 一、override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的...

java基础_day0022_java_关键字_Override__子类_父类_个人账户存钱_消费_的测试

账号类    : package day08_06; public class Account { private int id; private double balance; ...

转:C#继承之base,virtual,override,abstract,new,sealed关键字

转自:http://www.cnblogs.com/YuanSong/archive/2012/07/20/2601224.html 1.base 关键字 Base 关键字用于从派生类中访问基...

c#的new、abstract、virtual、override,sealed关键字区别

new 与 override的区别引用AnyTao博客中的一句话: 覆写(override)与重载(overload),是成就.NET面向对象多态特性的基本技术之一 正如某网友说的那一句话: O...

使用 Override 和 New 关键字进行版本控制(C# 编程指南)

原文地址:点击打开链接base and derived classes in different libraries can evolve and maintain backward compatib...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么C++不提供override这个关键字呀?
举报原因:
原因补充:

(最多只允许输入30个字)