C++学习 函数的重载

来源:互联网 发布:线切割电脑主板编程 编辑:程序博客网 时间:2024/06/09 19:20

参考书籍《从新手到高手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;}
结果:












原创粉丝点击