#include
using namespace std;
const float PI = 3.14159; //定义常变量
int main()
{
cout<<PI<<endl;
return 0;
}
运行程序输出3.14159
const可以使用在主函数的外部,其意义为定义一个变量不过这个变量是无法改变的常变量。
C语言中也存在类似的函数 define 但两者存在不同。
举例:
#define PI 3014159
const float PI = 3.14159;
1.使用define定义后仅仅是在编译时将字符串PI置换成3.14159,运行后程序中的所有的PI都被3.14159代替。(使用define定义赋值后进行计算时容易产生错误,特别注意)
2.const则是对float 类型的变量 PI 进行赋值,把PI变为程序中一个无法改变值的常变量。
C++允许在同一作用域中使用相同的函数名定义不同的函数(C语言中不允许这样做),但需要这些函数参数个数或者参数类型不相同,如此实现不同的功能。
函数重载的实质就是函数名的复用。
#include
using namespace std;
int hai (int a,int b) //定义第一个函数命名为 hai
{
if (a>b);
cout<<a<<endl;
}
float hai (float a,float b) //定义第二个函数定义为 hai
{
if (a>b);
cout<<"输出较大的数:"<<a<<endl;
}
int main()
{
int a,b;
cin>>a>>b;
hai(a,b); //调用重载函数hai
return 0;
}
在程序中第一个函数的变量为int型第二个函数的变量为float型,在主函数中调用定义的函数hai时程序根据输入的a,b的值进行调用,若输入的为float类型则调用第二个函数,若为int型则调用第一个函数。
函数重载的条件:
1函数名相同。
2函数的参数类型不同 或 函数参数的个数不同。(参数个数和参数类型只能有一个不同,若全不相同则报错)
上面一条函数的重载说的是关于函数名的复用而对于函数模板则是对于变量类型的复用。
**使用格式: **
template <typename T>
#include
using namespace std;
template <typename T>
T hai (T a,T b)
{
if (a>b);
cout<<a<<endl;
}
int main()
{
cout<<"输出较大的数值"<<endl;
hai(20.1,2.5); //给形参赋值两个float类型的数据
hai(2,6); //形参赋值两个int类型的变量
return 0;
}
以上程序设置了一个变量类型 T 不过这个T的实际类型无法确定,因此T的实际类型需要根据实际的参数类型确定。因此使用template函数模板的话可以实现对于用单个函数处理多种类型的数据。