C++学习笔记2--函数重载与默认参数
2018-08-09 07:29
344 查看
函数多态是C++在C语言基础上新增的功能。默认参数让您可以使用不同数目的参数调用同一个函数,而函数多态让您可以使用多个同名的函数。
1.1 函数重载的使用
函数重载可以是以下几种情况:1. 参数的个数不同,2. 参数的类型不同,3. 顺序不同, 和返回值无关
问题:如何访问一个重载函数的地址?
回答: 我们可以通过函数指针进行匹配。
#include<iostream> #include<stdio.h> //参数的个数,参数的类型不同,顺序不同,返回值无关 void go(int a) { std::cout << a; } void go(double a) // 参数类型不同 { std::cout << a; } void go(double a,int b ) //参数个数不同 { std::cout << a << b; } void go(int a, double b) //参数的顺序不同 { std::cout << a << b; } int main() { void(*pgo1)(int a)=go; void(*pgo2)(double a)=go; void(*pgo3)(double a, int b)=go; void(*pgo4)(int a, double b)=go; printf("%p\n",pgo1); printf("%p\n", pgo2); printf("%p\n", pgo3); printf("%p\n", pgo4); getchar(); return 0; }
输出
1.2 函数的默认参数
在C语言中我们是没有默认参数这一个说法的,默认参数是C++新的功能。默认参数是指的是当函数调用中省略实参时自动使用的一个值。对于带参数列表的函数,必须从右往左添加默认值,也就是说,要为某个参数设置默认值,则必须为右边的所有参数提供默认值。 另外,实参按照从左往右的顺序依次赋值给相应的形参,而不能跳过任何参数。 通过使用默认参数,可以减少要定义的析构函数、方法以及方法重载的数量。
#include<stdio.h> #include<stdlib.h> #include<iostream> //默认参数必须放在右边 //默认参数中间不允许出现不默认的 void print(int c,int a = 1, int d=2, int b = 3) { std::cout << a<<b<<c << std::endl; } void print(double c) { } int main() { //print(1,2,3); //函数指针没有默认参数,必须全部输入数据 //函数重载与函数默认参数冲突,需要你输入的参数类型不一个,个数不一样,顺序不一样不会出现问题,否则一定报错 void(*pt1)(int c, int a , int d , int b ) = print; pt1(100,1,2,3);//函数指针调用,没有用默认的 print(100); system("pause"); return 0; }
注意一下
1. 函数指针是不可以输入默认参数的。
2. /函数重载与函数默认参数冲突,优先可以使用命名空间解决,实在不行使用函数指针解决。
相关文章推荐
- VS2010 C++ 学习笔记(一) 引用 函数参数默认值 函数重载 内联inline
- [C++学习笔记]--内联函数、函数重载、函数defualt参数
- 【C++学习笔记】函数重载和函数覆盖
- 【C++】【学习笔记】【006】函数的重载
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)
- 每天学习一点C++之三——函数的默认参数
- Python学习笔记--《简明Python教程》之默认函数参数和关键参数函数
- C++常引用作为函数的参数学习笔记
- C++学习笔记:重载 函数调用符()
- C++学习笔记:函数指针语法基础以及函数指针做函数参数的思想剖析
- C++学习笔记1(带参数的main( )函数)
- C++学习笔记之模板(1)——从函数重载到函数模板
- c++学习笔记之函数重载与const的关系
- C++学习笔记17——函数重载
- [c++学习笔记]反汇编角度看变量名和引用作为函数参数
- C++学习笔记->函数重载
- C/C++学习笔记12:数组作为函数参数
- C++学习笔记_6:函数的重载
- 新手学习C++笔记4:函数的原型化与重载
- C++学习笔记23,类内函数重载