一 概述
本文主要设计c++中的函数相关有效率的机制,关注相比c开始所具备的变化如重载等。
二 备注
三 目录
目录
一 概述
二 备注
三 目录
四 正文
(一)函数调用与默认形参
1 说明
2 代码
(二)函数重载
1 说明
2 代码
3 结果
(三)函数模板
1 说明
2 代码
3 结果
(四)内联函数
1 说明
2 代码
3 结果
四 正文
(一)函数调用与默认形参
1 说明
(1)函数调用,我个人认为函数的引入是为了解决那些可能需要多次解决的问题提高重用性,以及对一个小的部分进行封装,抽象,一个个函数可以看作一个个模块。c++的简单调用与c是比较一致,也额外引入了一些其他共功能。
(2)默认形参即对于一个函数,可以给其形参一个默认值,在无实参时,使用默认值。
2 代码
#include<iostream>
using namespace std;
int add(int x=2,int y=3)
{
return x+y;
}
int main()
{
cout<<add(10,20)<<endl;
cout<<add(30)<<endl;//此时b有默认值,定义是在最右边
cout<<add()<<endl;
return 0;
}
3 结果
(二)函数重载
1 说明
函数重载旨在解决函数名相同,而形参不同的问题,如果写好几个浪费,该机制可以自行选择相应形参对应的函数。
2 代码
#include<iostream>
using namespace std;
int add(int a,int b)
{
return a+b;
}
double add(double a,double b)
{
return a+b;
}
int main()
{
cout<<add(20,30)<<endl;
cout<<add(2.92,15.33)<<endl;
return 0;
}
3 结果
(三)函数模板
1 说明
函数模板紧接上面的函数重载,目前看是精简化函数重载的仍然需要重复写,而直接以模板的形式给出来,让代码更简洁.
2 代码
#include<iostream>
using namespace std;
template<class T1,class T2>//模板函数相应的关键字
T1 add(T1 x,T2 y)
{
return x+y;
}
int main()
{
cout<<add(2,3)<<endl;;
cout<<add(1.1,2.22)<<endl;
cout<<add('A',22)<<endl;
return 0;
}
3 结果
这个输出W的原因之后务必解决
(四)内联函数
1 说明
函数的调用往往都有一个开辟空间,返回值的过程,如果某个函数的本身执行长度不长,又要屡次调用,那肯定浪费时间和空间,举个不恰当的例子,我在工地板状,每次都要去水井那里执行以下挑水的事件,挑水简单,但是停下搬砖,开启挑水模式,走过去这些过程开销太大,如果可以直接办了砖就直接接下来就地挑水就好了.内联机制就是,在编译时,编译器直接将函数代码放到函数调用地方去,顺着执行产生结果.(这有点反着封装函数来的感觉了,归根到底是因为他不长,他频繁被调用)
注意:内联函数要在调用之前实现,以让编译器做出判断.
2 代码
#include<iostream>
using namespace std;
inline int add(int x,int y)
{
return x+y;
}
int main()
{ int a=2,b=3;
cout<<add(a,b)<<endl;//cout<<a+b<<endl;
return 0;
}
3 结果
|