C++中的函数分为普通函数、内联函数和回调函数。
inline函数
什么是inline函数
inline函数是用来代替宏定义的一种方式,它是一种让编译器直接将函数体插入到调用函数处的编译选项。
inline函数的特点
1.为了提高程序的运行效率,编译器将在每个调用函数的位置插入内联函数的代码执行,这将导致程序的体积增加。
2.内联函数不允许递归调用。
3.inline函数的定义通常放在头文件中。
4.编译器可能不会将所有函数都内联,这取决于编译器的解析和情况。
5.具有内联属性的成员函数,在类定义之外定义时,必须加上inline关键字;
6.虚函数和析构函数不能是内联函数。
inline函数的示例
inline int add(int a,int b)
{
return a+b;
}
int main()
{
int a=1,b=2,ret;
ret = add(a,b);
return 0;
}
回调函数
什么是回调函数
回调函数是一种通过函数指针调用的函数。当一个函数需要调用另一个函数来完成某个任务时,我们可以把那个函数的指针作为参数传给那个函数,使它在适当的时候回调那个函数。
回调函数的特点
1.回调函数是由另一个函数指针调用的。
2.回调函数可以接受任何类型的数据,包括指针。
3.回调函数一般都是在单独的线程中执行,因此必须考虑线程安全问题。
4.回调函数中的代码应该尽量简单,因为它可能会被频繁地调用。
5.回调函数的调用方和被调用方应该在参数、返回值、函数名等方面达成一致。
回调函数的示例
#include <iostream>
using namespace std;
void sort(int a[],int n,int (*compare)(int,int))
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(compare(a[i],a[j])>0)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
int incre(int x,int y)
{
return (x<=y)?-1:1;
}
int decre(int x,int y)
{
return (x>=y)?-1:1;
}
int main()
{
int a[10]={1,5,3,9,0,4,8,2,7,6};
cout<<"incre order";
sort(a,10,incre);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"decre order";
sort(a,10,decre);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
普通函数
什么是普通函数
普通函数是一种普通的C++ 函数。
普通函数的特点
1.普通函数在调用时会将程序的执行权交给该函数,当函数结束时,执行权重新回到调用它的函数。
2.普通函数的定义通常放在类的外面。
3.普通函数可以使用函数的形参来传递数据,也可以使用函数的返回值来返回数据。
4.普通函数在定义时可以使用默认参数,即在函数参数列表中给出的初始值,在调用函数时有一项没有被赋值,将使用默认值。
普通函数的示例
#include<iostream>
using namespace std;
int add(int a,int b)
{
return a+b;
}
int main()
{
int a = 1, b = 2, ret;
ret = add(a, b);
cout<<ret<<endl;
return 0;
}
以上就是C++中三种函数的详细讲解。需要注意的是:在使用inline关键字声明内联函数时,编译器不一定会将其内联,视编译器和函数体的复杂程度而定。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++知识点之inline函数、回调函数和普通函数 - Python技术站