您的位置:首页 > 编程语言 > C语言/C++

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. /函数重载与函数默认参数冲突,优先可以使用命名空间解决,实在不行使用函数指针解决。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: