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