虚函数与普通函数的关系

  1. 普通的函数重载时,其函数参数或者参数类型必须有所不同,函数的返回类型也可以不同。
  2. 当重载一个虚函数时,也就是说在派生类中重写虚函数时,要求函数名,返回值,参数,参数类型,参数顺序与基类中的虚函数完全相同。如果仅仅返回类型不同。其余均相同,系统会给出错误信息。
  3. 若仅仅函数名相同,而参数个数,顺序或类型不同,系统将它当作为普通的函数重载,这时他将失去虚函数的特性。
时间: 2024-10-13 11:48:33

虚函数与普通函数的关系的相关文章

C++纯虚函数、虚函数、实函数、抽象类,重载、重写、重定义

首先,面向对象程序设计(object-oriented programming)的核心思想是数据抽象.继承.动态绑定.通过数据抽象,可以使类的接口与实现分离,使用继承,可以更容易地定义与其他类相似但不完全相同的新类,使用动态绑定,可以在一定程度上忽略相似类的区别,而以统一的方式使用它们的对象. 虚函数的作用是实现多态性(Polymorphism),多态性是将接口与实现进行分离,采用共同的方法,但因个体差异而采用不同的策略.纯虚函数则是一种特殊的虚函数.虚函数联系到多态,多态联系到继承. 一.虚函

C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别

1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就是一个父类中的虚函数: class A { public: virtual void out2(string s) { cout<<"A(out2):"<<s<<endl; } }; 2.纯虚函数(pure virtual) C++中包含纯虚函数的类,被称为是“抽象类

C++多态篇2——虚函数表详解之从内存布局看函数重载,函数覆盖,函数隐藏

上一篇C++多态篇1一静态联编,动态联编.虚函数与虚函数表vtable中,我在最后分析了虚函数与虚函数表的内存布局,在下一篇详细剖析虚函数及虚函数表的过程中,我发现有关函数重载,函数覆盖,函数重写和函数协变的知识也要理解清楚才能对虚函数表在内存中的布局,对派生类的对象模型以及对多态的实现有更深的理解. 所以这一篇我作为一篇过渡篇,也同时对我以前写过的一篇博文进行一个收尾.在C++继承详解之二--派生类成员函数详解(函数隐藏.构造函数与兼容覆盖规则)文章中,我对函数覆盖,重载,重写提了一下,但是没

C++ 类在继承中虚函数、纯虚函数、普通函数,三者的区别

1.虚函数(impure virtual) C++的虚函数主要作用是"运行时多态",父类中提供虚函数的实现,为子类提供默认的函数实现. 子类可以重写父类的虚函数实现子类的特殊化. 如下就是一个父类中的虚函数: class A { public:     virtual void out2(string s)     {         cout<<"A(out2):"<<s<<endl;     } }; 2.纯虚函数(pure

继承中的虚函数、纯虚函数、普通函数

一.虚函数 被virtual关键字修饰的类成员函数就是虚函数.虚函数的作用就是实现运行时的多态性,将接口与实现分离.简单理解就是相同函数有着不同的实现,但因个体差异而采用不同的策略. 基类中提供虚函数的实现,为派生类提供默认的函数实现.派生类可以重写基类的虚函数以实现派生类的特殊化.如下: class Base{ public: virtual void foo() { cout<<"Base::foo() is called"<<endl; } }; clas

函数指针玩得不熟,就不要自称为C语言高手(函数指针是解耦对象关系的最佳利器,还有signal)

记得刚开始工作时,一位高手告诉我说,longjmp和setjmp玩得不熟,就不要自称为C语言高手.当时我半信半疑,为了让自己向高手方向迈进,还是花了一点时间去学习longjmp和setjmp的用法.后来明白那不单是跳来跳去那样简单,而是一种高级的异常处理机制,在某些情况下确实很有用. 事实上,longjmp和 setjmp玩得熟不熟与是不是C语言高手,不是因果关系.但是,如果可以套用那位高手的话,我倒想说如果函数指针玩得不熟,就不要自称为C语言高手.为什么这么说呢,函数指针有那么复杂吗?当然不是

Window系统、主函数和窗体函数这三者之间的关系

理解Window系统.主窗体.窗体函数这三者之间的关系,对于编写Windows程序十分重要. 主函数和窗体函数都是由Windows系统来调用的函数.仅仅只是主函数是程序启动之后.系统首先调用的函数: 而窗体函数是主函数在获得消息并把消息发给系统之后,由操作系统调用的函数. 不同的消息所相应的操作就是由窗体函数完毕的,Windows程序猿的工作就是编写窗体函数的case中的代码. Windows系统.主函数.窗体函数这三者之间的关系,例如以下图所看到的:

JavaScript中Function函数与Object对象的关系

函数对象和其他内部对象的关系 除了函数对象,还有很多内部对象,比如:Object.Array.Date.RegExp.Math.Error.这些名称实际上表示一个 类型,可以通过new操作符返回一个对象.然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串 "function",而typeof一个数组对象或其他的对象时,它会返回字符串"object".下面的代码示例了typeof不同类型的情况: 以下是引用片段: alert(ty

函数自变量与因变量的关系

函数关系式中,能够影响其他变量的一个变量叫做自变量,随自变量的变动而变动的量,就称为因变量.下面介绍如何在几何画板制作函数自变量与因变量关系的课件. 更多详情:http://www.jihehuaban.com.cn/ 探讨函数自变量与因变量的关系课件模板样图: 该课件制作过程如下: 1.绘制手写图 选择标记工具,此时看到鼠标是一支笔,左键按住鼠标,用笔在画板中绘制一个手写图形. 2.绘制函数图象 用移动箭头工具选中手写图形,单击菜单"数据"-"定义绘制函数",得到

虚函数与重载函数的区别

1 重载函数要求函数具有相同的返回值类型和函数名称,并具有不同的参数序列,而虚函数则要求这三项(函数名,返回值类型,参数序列)完全相同 2 重载函数可以是成员函数或友元函数 而虚函数只能是成员函数 3 重载函数的调用是以传递参数序列的差别作为调用不同函数的依据,而虚函数根据对象的不同的调用不同类的虚函数 4 虚函数在运行期间表现出多态功能,这是c++的精髓,而重载函数则在编译时表现出多态 一般来讲,虚函数是一种特殊的重载,即必须被重载的函数,一般函数可以不被重载.一个函数被声明为虚函数,目的就是