
函数重载:函数名相同,函数的参数个数,函数的参数类型,函数的参数顺序形成的这些函数,那么说这些函数构成 函数重载
判断是否构成函数重载 规则:
1. 函数名相同 --- 前提条件
2. 函数的参数类型不同 || 参数个数不同 || 参数类型的顺序不同,三选一即可,均可构成重载
3. 函数的返回值不是做为函数重载判断的依据
演示代码:
#include
using namespace std;
/*
函数重载:函数名相同,函数的参数个数,函数的参数类型,函数的参数顺序形成的这些函数,那么说这些函数构成 函数重载
判断是否构成函数重载 规则:
1. 函数名相同 --- 前提条件
2. 函数的参数类型不同 || 参数个数不同 || 参数类型的顺序不同,三选一即可,均可构成重载
3. 函数的返回值不是做为函数重载判断的依据
*/
void func()
{
cout << void func()<
C++是怎样来支持函数重载呢。而C语言不支持,原因在于C和c++,他们之间对源程序编译技术不一样,C++编译器编译源文件时通过底层倾轧(name mangling)技术,v--void ---int c -- char
底层倾轧(name mangling) ---- 将原有函数名 + 参数类型 ----> 在底层时,形成一个新的函数名,从底层,各个函数名还是不一样的。
比如:
void print(int data) ---> void print_i(int data)
void print(int data,int data2) ---> void print_ii(int data,int data2)
void print(char data) ---- void print_c(char data)
以上三个函数通过函数重载,实现了静态联编,从而让函数体现出了多种形态---也被称之为静态多态
---因为它的实现发生在程序编译期
默认参数和函数重载同时共存,他们在一起时,会出现一种现象:函数调用时的模糊性
//函数的参数个数不同实现默认参数与函数重载一起
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(QWidget *parent = nullptr)
1.使用函数重载实现初始化数组的函数,这个函数可以初始化int,double,char
函数名:init_array
#include
using namespace std;
/*
1 使用函数重载实现初始化数组的函数,这个函数可以初始化int,double,char
函数名:init_array
要点:理解数组做为形参时变化,能力强的同学可以考虑使用数组指针引用
*/
void init_array(int* p,int len)
{
// cout << "void init_array(int* p,int len)"<
2 编写函数,计算一个圆锥体(cone)的体积(volume),并且在不指定高度时,默认高度按照1计算,底部半径没有默认值。
圆锥体积公式:V=1/3sh
s:底部圆面积
h:圆锥体高
利用函数重载设计两个计算圆锥体积函数
#include
using namespace std;
/*
2 编写函数,计算一个圆锥体(cone)的体积(volume),并且在不指定高度时,默认高度按照1计算,底部半径没有默认值。
圆锥体积公式:V=1/3sh
s:底部圆面积
h:圆锥体高
利用函数重载设计两个计算圆锥体积函数
*/
/**
* @brief calc_volume
* @param dir --- 底部圆的半径
* @param height --- 圆锥体高
* @return
*/
double calc_volume(int dir,int height=1)
{
return 1*1.0/3*dir*dir*3.14*height;
}
/**
* @brief calc_volume
* @param area --- 底部圆的面积
* @param height --- 圆锥体高
* @return
*/
double calc_volume(double area,int height=1)
{
return 1*1.0/3*area*height;
}
void calc_volume( double& volume,double area,int height=1)
{
volume = 1*1.0/3*area*height;
}
int main()
{
cout << calc_volume(5)<
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)