虚函数与重载函数的区别

1 重载函数要求函数具有相同的返回值类型和函数名称,并具有不同的参数序列,而虚函数则要求这三项(函数名,返回值类型,参数序列)完全相同

2 重载函数可以是成员函数或友元函数 而虚函数只能是成员函数

3 重载函数的调用是以传递参数序列的差别作为调用不同函数的依据,而虚函数根据对象的不同的调用不同类的虚函数

4 虚函数在运行期间表现出多态功能,这是c++的精髓,而重载函数则在编译时表现出多态

一般来讲,虚函数是一种特殊的重载,即必须被重载的函数,一般函数可以不被重载。一个函数被声明为虚函数,目的就是实现多态,若派生类不进行重定义则失去了原来的意图

原文地址:https://www.cnblogs.com/guoyu1024/p/9069984.html

时间: 2024-10-10 21:27:44

虚函数与重载函数的区别的相关文章

第一周 从C走进C++ 007 内联函数和重载函数

1. 内联函数? 函数调用是有时间开销的.如果函数本身只有几条语句,执行非常快,而且函数被反复执行很多次,相比之下调用函数所产生的这个开销就会显得比较大.? 为了减少函数调用的开销,引入了内联函数机制.编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句. inline int Max(int a,int b) { if( a > b) return a; return b; } 2. 函数重载? 一个或多个函数,名字相同,然而参数个数或参数类型不相同,

c++ 多态,虚函数、重载函数

c++三大特性:封装.继承.多态.封装使代码模块化,继承扩展已存在的代码,多态的目的是为了接口重用. 多态: 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说:允许将子类类型的指针赋值给父类类型的指针(一个接口,多种方法)C++ 支持两种多态性:编译时多态性,运行时多态性a.编译时多态性(静态多态):通过重载函数实现b.运行时多态性(动态多态):通过虚函数实现 多态的作用: 那么多态的作用是什么呢,封

MATLAB 嵌套函数,子函数,私有函数,重载函数

MATLAB 函数嵌套 MATLAB中M文件有两种类型,脚本M文件和函数M文件.脚本M文件是将可执行程序语句放入M文件中,就像在命令窗口那样,按其语句顺序及逻辑关系执行,可以理解为一般的顺序执行程序语句.函数文件一般是声明一个函数,方便以后操作中的调用.下面就函数文件中函数嵌套的使用做简单分析. 对于函数文件,一个M文件只能定义一个总函数,即第一句function所定义的函数,而且整个M文件在外部使用时候表现出来的也只有这一个函数.如果需要多个函数嵌套,与其定义顺序无关.下面结合一个简单的例子来

OOP 1.4 内联函数和重载函数函数参数缺省值

1.内联函数 存在的背景:函数调用存在开销(调用时候参数压栈,返回地址压栈:返回时从栈取出返回地址,跳转到返回地址.总共需要几条指令的开销).如果函数指令较少,调用多次,函数调用的开销占比大. 内联函数的处理:编译器处理对内联函数的调用语句时,将整个函数代码插入到调用语句处,不会产生函数的语句. 使用:在函数定义前面加入inline关键字 e.g. inline int max(int num1,int num2) 弊处:可能会增大可执行程序的大小 2.函数重载 定义:一个或多个函数,名字相同,

匿名函数,子函数,私有函数,重载函数,eval和feval函数

匿名函数,子函数,私有函数等函数类型 匿名函数: 匿名函数没有函数名,也不是.m文件,只包含一个表达式和输入输出参数. [email protected](x,y)x.^y+3*x*y x,y为输入输入参数,Fxy为函数名 子函数: 在 Matlab中, 多个函数写入一个.m文件中.其中出现的第一个函数称为主函数,其他函数称为子函数,保存时文件名与主函数名相同,外部程序只能调用主函数. 特点: 子函数只能被同一文件下的其他函数调用 通过名称调用函数时优先调用子函数,再调用内置函数. 同一文件的主

重载函数

出现在相同的作用域中的两个函数,如果具有相同的名字而形参表不同.则称为 重载函数(overloaded function) 任何程序都仅有一个main 函数的实例.main 函数不能重载 函数重载和重复声明的区别 如果两个函数声明的返回类型和形参表完全匹配,则将第二个函数声明视为第一个的重复定义. 如果两个函数的形参表完全相同,但返回类型不同,则第二个声明是错误的.(然而  使用const  是可以被重载 的)   函数不能仅仅基于不同的返回类型而实现重载,但是可以基于const  (常量性)

C++学习笔记(八):函数重载、函数指针和函数对象

函数重载 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数.重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处. 试想如果没有函数重载机制,如在C中,你必须要这样去做:为这个print函数取不同的名字,如print_int.print_string.这里还只是两个的情况,如果是很多个的话,就需要为实现同一个功能的函数取很多个名字,如加入打印long型.char*.各种类型的数组等等.

C++中重载函数详解

函数的重载详解 什么时函数重载: 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数.重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处. 1.是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数“个数” 或 “类型” 或 “顺序”)必须不同,常用来处理实现功能类似数据类型不同的问题(这也是C++与C语言的最重要区别) 1 int Ad

函数的重载(overload)

重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可.重载的特点:与返回值类型无关,只看参数列表.重载的好处:方便于阅读,优化了程序设计.重载示例://返回两个整数的和int add(int x,int y){return x+y;}//返回三个整数的和int add(int x,int y,int z){return x+y+z;}//返回两个小数的和double add(double x,double y){return x+y;} 什么时候用重载 当