C++学习 函数的重载

本文详细介绍了C++中函数重载的概念及应用,包括普通函数重载、成员函数重载、函数的缺省参数以及构造函数的重载。通过具体的代码示例,展示了如何根据不同参数类型和数量来区分并调用不同的函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考书籍《从新手到高手C++全方位学习》

=============普通函数重载==============
#include<iostream>
using namespace std;
void fun(int);
void fun(float);
void fun(long);
void fun(double);

int main()
{
    int a=1;
    long b= 100000;
    float c=1.5;
    double d=6.4579;

    cout<<"a:"<<a<<endl;
    cout<<"b:"<<b<<endl;
    cout<<"c:"<<c<<endl;
    cout<<"d:"<<d<<endl;

    fun(a);    根据参数的不同,选择不同的函数
    fun(b);
    fun(c);
    fun(d);
    return 0;

}
void fun(int a)
{
    cout<<"a的平方为:"<<a*a<<endl;
}
void fun(long b)
{
    cout<<"b的平方为:"<<b*b<<endl;
}
void fun(float c)
{
    cout<<"c的平方为:"<<c*c<<endl;
}
void fun(double  d)
{
    cout<<"d的平方为:"<<d*d<<endl;
}
结果:


=============成员函数重载==============
函数的重载:
1不同的方法都具有相同的函数名 
2重载的方法属于同一个类
3重载的方法的函数参数不同(参数个数或者参数类型)
#include<iostream>
using namespace std;

class Cube
{
public:
    void sum();
    void sum(int x, int y);
private:
    int i;
    int j;
};
int main()
{
    Cube a;
    a.sum(2,3);  //这两个函数的调用 一定要有顺序
    a.sum();     //因为前者为私有成员赋值了,后者才能调用

    return 0;
}
void Cube::sum()
{
    cout<<"i的立方:"<<i*i*i<<endl;
    cout<<"j的立方:"<<j*j*j<<endl;
}
void Cube::sum(int x , int y)
{
    i=x;
    j=y;
    cout<<"i="<<i<<endl;
    cout<<"j="<<j<<endl;
}
结果:


=============函数的缺省参数(默认参数)==============
【普通函数的默认参数】
#include<iostream>
using namespace std;
void func(int =3, int=9);  //函数的声明 可以省略参数名称
int main(void)
{
    func();
    func(10,100);
    return 0;
}
void func(int x, int y)
{
    cout<<"x="<<x<<"\t"<<"y="<<y<<endl;
}

【成员函数的默认参数】
#include<iostream>
using namespace std;
class A
{
public:
    void set(int =8, int=5);//函数的声明,可以省略参数名称
    void show(){cout<<"i*j="<<i<<'*'<<j<<"="<<i*j<<endl;} //*和=既可以用单引号也可以双引号
private:
    int i;
    int j;
};
int main(void)
{
    A a;
    a.set();      //无参数 调用默认的8,5
    a.show();
    a.set(2,9);  //有参数 调用重新赋的值2,9
    a.show();
}
void A::set(int x,int y)//函数的定义,都不能省略
{
    i=x;
    j=y;
}
默认参数的函数,重载的是参数的数值
重载函数重载的是参数的类型
结果:
【普通函数的默认参数】                         


 【成员函数的默认参数】

=============构造函数的重载==============
#include<iostream>
using namespace std;
class rectangle
{
public :
    rectangle(){cout<<"构造一个长方形\n";}
    rectangle(int x , int y)
    {length=x;width=y;cout<<"长方形的面积:"<<length*width<<endl;}
    rectangle(int x , int y,int z)
    {length=x;width=y;height=z;cout<<"长方形的体积:"<<length*width*height<<endl;}
private:
    int length;
    int width;
    int height;
};
int main(void)
{
    rectangle a;    //不要老把重载成相互取代,而是相互之间可以协作
    rectangle b(2,5);  
    rectangle c(2,5,4); //构造函数每次都是初始化所需参数,不可能使用其它构造函数初始化的值

    return 0;
}
结果:












内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值