C++之函数重载

函数重载:

1、具有相同的名称,执行基本相同的操作,但是使用不同的参数列表。

2、函数具有多态性。

3、编译器通过调用时参数的个数和类型确定调用重载函数的哪个定义。

4、只有对不同的数据集完成基本相同任务的函数才应重载。

函数重载的优 点
1、不必使用不同的函数名
2、有助于理解和调试代码
3、易于维护代码

接下来直接上代码:

#include <iostream>

using namespace std ; 

void say_hello(void)
{
	cout << "this is hello" << endl ;
}

//数据类型不同的重载
void say_hello(int a = 100)
{
	cout << "this is hotdog" << endl ;
}

int  say_hello(double a )
{
	cout << "this is hotpig:" << a <<  endl ;
}
//参数个数不同的重载
int  say_hello(int a, int b, int c)
{
	cout << "a+b+c = " << a+b+c << endl ;
} 

int main(void)
{
	say_hello(100);
	say_hello(11.11);
	say_hello(1 , 2 , 3);
	return 0 ;
}</span>

执行结果:

this is hotdog
this is hotpig:11.11
a+b+c = 6
时间: 2024-10-29 21:24:59

C++之函数重载的相关文章

为什么这个不能实现函数重载?

问题描述 为什么这个不能实现函数重载? public int hanshu(int a) { return a; } public void hanshu(int b) { Console.WriteLine(b); } 它们不是参数返回值都不同么? 解决方案 C#规定,函数重载必须是参数不同,相同参数不同返回值没法构成重载,非但没法构成重载,甚至编译都不通过. 所谓参数不同,是指参数个数不同,或者/并且参数在相同顺序上的类型不同,光形参名不同不算参数不同. 顺便说下,IL层面是支持不同返回值相

javascript arguments与javascript函数重载

1.所 有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数.他不是一个数组,如果用typeof arguments,返回的是'object'.虽然我们可以用调用数据的方法来调用arguments.比如length,还有index方法.但是数 组的push和pop对象是不适用的. 2.函数定义时的参数个数和函数调用时的参数个数没有任何关系. 在函数中可以用f.arguments[0]和f.arguments[1]得到调用时传入的第一和第二个参数,arguments不能够创建

javascript实现函数重载的深入探索

javascript|函数  <script>function Point2D(x, y){ this.x = x; this.y = y; Point2D.prototype.quadrant = function() {  if (x > 0 && y > 0) return "I";  else if (x < 0 && y > 0) return "II";  else if (x <

C#中的函数重载

函数 我们以前在C++中曾经知道C++中有函数重载的概念,现在在ASp.Net的C#中我们仍然可以使用函数重载的概念和定义:假设我们在程序中定义了两个函数:String test(String str1) 而后 int test1(int i),他们的内容都是很简单的功能String test(String str1){Response.Write("函数重载测试,这个是String函数");Return "123232";}int test(int i){Resp

让JavaScript轻松支持函数重载(Part 2

在"让 JavaScript 轻松支持函数重载 (Part 1 - 设计)"里,我们设计了一套能在JavaScript中描述函数重载的方法,这套方法依赖于一个叫做Overload的静态类,现在我们就来看看如何实现这个静态类. 识别文本签名 我们先来回顾一下上一篇文章中提到的Overload用例: var extend = Overload .add("*, ...", function(target) { }) .add("Boolean, *, ...&

让JavaScript轻松支持函数重载(Part 1

JavaScript支持重载吗? JavaScript支持函数重载吗?可以说不支持,也可以说支持.说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个重载.说支持,是因为JavaScript函数对参数列表不作任何限制,可以在函数内部模拟对函数重载的支持. 实际上,在很多著名的开源库当中,我们都可以看到函数内部模拟重载支持的设计.例如说jQuery的jQuery.extend方法,就是通过参数类型判断出可选参数是否存在

Effective C#原则20:明辨接口实现和虚函数重载的区别

粗略的看一下,感觉实现接口和虚函数重载是一样的.你定义了一些对象, 但是这些对象是在另一个类型里申明的.你被第一感觉骗了,实现接口与虚函数 重载是完全不同的.在接口里定义的成员默认情况下,是根本不存在实际内容的 . 派生类不能重载基类中的接口成员.接口可以隐式的实现,就是把它 们从类的公共接口中隐藏.它们的概念是不同的而且使用也是不同的. 但你可以这样的实现接口:让你的派生类可以修改你的实现.你只用对派生类做 一个Hook就行了.(译注:相信写过C++程序的人就知道hook是什么意思,而且我 也

Matlab如何实现函数重载?

  Matlab如何实现函数重载?下面我就通过一个简单的输出输入数中的最大数的函数fun()来说明Matlab在编辑函数时如何实现重载. 方法/步骤: 1.首先打开Matlab(本人使用的是Matlab 2015a,使用其他版本的Matlab影响不大).在Common Window里输入edit fun(fun可改为任意字符,只为演示用),打开M文件编辑器,此时已创建M文件,文件名为fun. 2.在编辑器内输入 function y=fun(varargin),varargin是Matlab内部

C++和C不同是因为函数重载

在C语言里,一个指针可以指向一个函数.这个指针也有两个属性,但一个是函数的入口地址,另一个是函数的返值类型.例如下面的程序,它在C语言里是正确的: int time12(int i) { return(i%12); } int main() { int(*fp)()=time12; intt=fp(13); return0; } 主函数的第一句是一条定义语句.我们应从等号左边的标识符读起,等号左边出现的除了标识符以外都是类型的符号,读的顺序却要按照这个符号作为运算符时的运算级别来读.此句读作:f

php函数重载的替代方法

  对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样.而弱类型本来就不区分,所以无法通过这些来实现.但是,可以通过下面的方法来实现简单的伪重载吧. 函数重载的替代方法-伪重载,下面看一个具体的实例代码. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50