C++初识之函数重载、缺省参数
2017-10-04 10:46
519 查看
C++初识之函数重载、缺省参数
C语言是结构化和模块化的语言,它是基于过程的,在面对小规模的问题是还比较容易来处理,但是当在公司以及个人解决某些复杂,程序规模比较庞大的问题时,C语言就显得有点力不从心了,故,C++就应运而生了~~~相比于C语言,C++是面对对象的语言,虽然相比于如今的纯面向对象语言JAVA一点,其显得不那么专一,但是其却将同时具有基于过程和面对对象的机制,大大提高了然间开发的效率。
简单分析:
来看看一个简单的C++程序:
#include <iostream> using namespace std; int main() { int a = 0, b = 0; //输入数字 cin >> a >> b; //输出和 cout << "a + b = " << a + b << endl; system("pause"); return 0; }
这是一个非常简单的C++程序,下面来分析一下这段代码:
1. 预处理指令里包含的是输入输出流,iostream即是i-o-stream,输入输出流,其作用是向程序提供输入输出时所需要的一些信息。
2. 不同于C语言的,C++程序包含了一个命名空间,即 using namespace std; 其含义是:使用命名空间std。这是因为C++标准库中的类和函数是定义在命名空间std中的,如果程序段要用到C++标准库中的类或函数,就要用 using namespace std; 作提前声明,表明要用到命名空间内的内容。
3. 在C++中,输入输出是应用cin,cout这两个对象。
cin是istream类的派生类的对象,它通过提取运算符(">>"),从标准输入设备中提取数据送到输入流中。在提取数据时通常会跳过输入流中的空格、Tab键、换行符等。
cout是ostream流派生类的对象,它是通过插入运算符("<<"),将数据流中的数据插入到输出流,然后送达显示设备。
上面即是针对这段简单C++程序的分析。
当然,C++与C的不同之处不止此处几点,再来看看下面的代码:
运行结果:
函数重载:
显而易见,在这段代码中存在了函数的重载,而为什么C++支持函数重载,而C语言不支持呢?
首先,要想知道其原因,必须从函数调用的内部去分析,我是在linux系统下来进行了相应的观察,如图:
可以很清楚地观察到,在函数调用中,第一次调用add函数,其在底层调用时为:_Z3addii; 第二次时为:_Z3addfi;
即可分析在C++中,对于函数调用时,具有函数名修饰,而在linux中观察有其函数名修饰规则,是由统一的前缀(如此处的:_Z3)+函数名(add)+参数名首字母(ii;fi)构成。
而函数重载,即相同的函数名,只要函数参数的类型或个数有所不同,返回值可同可不同,则不影响相互之间的调用。
而在C中,对于函数的调用,统一是有函数名来完成,所以,不支持函数重载。
3. 缺省参数
在C++中,对于函数的参数支持缺省类型,而且全缺省,半缺省均支持。
#include <iostream> using namespace std; //全缺省 void add1(int a = 1, int b = 2) { cout << "a + b = " << a + b << endl; } //半缺省 void add2(int a, int b = 2) { cout << "a + b = " << a + b << endl; } int main() { add1(); add1(5, 3); add2(5); system("pause"); return 0; }代码运行结果入下:
第一个函数是全缺省,如果函数没有进行传参的话,就应用默认参数,如果有传参时,则按照传的参数执行程序。
第二个函数是半缺省,必须要传至少一个参数,另一个参数则采用默认值。
相关文章推荐
- C++的缺省参数与函数重载是正交特性吗?
- C++的缺省参数与函数重载是正交特性吗?
- 初识C++之函数重载、重写、重定义的区别
- c++初识以及函数重载
- C++函数重定义、重载、重写
- C++ 学习之函数重载、基于const的重载
- C++ 函数缺省参数
- c++的继承关系和函数重载
- C++成员函数的重载、覆盖与隐藏
- 用C++编写递归函数GetPower(int x,int y)计算x的y次幂,在同一程序里中针对整型和实型实现两个重载的函数;在主程序中实现输入输出
- C++拾遗--函数重载
- C++学习笔记23,类内函数重载
- C++ 和 Delphi 的函数覆盖(Override)与重载(overload)
- C++中重载与重写函数区别及虚函数
- c++第一节之函数重载与缺省参数
- 转】C++默认参数与函数重载
- C++编程思想读书笔记之 第五章 函数重载及缺省参数
- C++中虚函数和非虚函数重载在继承时的区别
- 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板
- C++普通重载,虚函数重载,纯虚函数重载