C++知识点之inline函数、回调函数和普通函数

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技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • otsu(大津法 最大类间方差法)

    Otsu算法,也称为大津法或最大类间方差法,是一种用于图像分割的算法。它可以自动确定一个阈值,将图像分成两个部分:前景和背景。下面是一个完整攻略,包含两个示例说明。 算法原理 Otsu算法的核心思想是最大化类间方差。类间方差是指前景和背景之间的差异程度,它可以用来衡量图像分割的质量。具体来说,Otsu算法通过遍历所有可能的阈值,计算每个阈值对应的类间方差,然…

    other 2023年5月8日
    00
  • 华为v9怎么提速? 华为v9开发者模式的设置教程

    华为v9是一款优秀的智能手机,但是有时候会出现卡顿、慢等问题。如何提速呢?接下来我将为大家详细讲解华为v9的提速方法以及如何设置开发者模式。 华为v9的提速方法 关闭后台应用 后台应用是一个非常大的资源消耗器,关闭后台不使用的应用可以有效地提升手机的速度。方法如下: 1.进入手机的“设置”界面。 2.选择“应用管理”选项。 3.选择需要关闭的应用程序。 4.…

    other 2023年6月26日
    00
  • C++string函数之strcat_s

    C++string函数之strcat_s 在C++语言中,字符串处理是必不可少的部分。其中,strcat_s()函数是C++中最常用的字符串连接函数之一。 函数简介 strcat_s()函数是Microsoft C++中的字符串连接函数,其定义如下: #include <string.h> errno_t strcat_s(char *strDe…

    其他 2023年3月28日
    00
  • PHP 第三节 变量介绍

    PHP 第三节 变量介绍 在本节中,我们将详细介绍PHP中的变量。变量是用于存储和操作数据的容器。在PHP中,变量使用一个美元符号($)后跟变量名来声明和使用。 变量声明和赋值 要声明一个变量,只需使用美元符号($)后跟一个有效的变量名。变量名必须以字母或下划线开头,后面可以是字母、数字或下划线的组合。以下是一个示例: $age = 25; 在上面的示例中,…

    other 2023年8月8日
    00
  • python中shape的运用

    在Python中,shape是一个用于获取数组或矩阵的形状的函数。在本攻略中,我们将详细讲解如何使用shape,并提供两个示例说明。 使用shape函数 在Python中,shape函数是一个用于获取数组或矩阵的形状的函数。该函数返回一个元组,其中包含数组或矩阵的维度信息。以下是一个示例,演示了如何使用shape函数: import numpy as np …

    other 2023年5月9日
    00
  • 3060锁算力版本的叫什么 3060锁算力版本后缀介绍

    3060锁算力版本的叫什么? NVIDIA推出的3060锁算力版本被称为\”Lite Hash Rate\”(LHR)版本。这个版本是为了限制加密货币挖矿性能而设计的,以防止滥用和市场供应短缺。 3060锁算力版本后缀介绍 在3060锁算力版本的型号名称中,会有一个后缀来表示其锁定的算力。以下是一些常见的后缀及其含义: LHR:Lite Hash Rate,…

    other 2023年8月5日
    00
  • 基于python3 类的属性、方法、封装、继承实例讲解

    基于Python3 类的属性、方法、封装、继承实例讲解 1. 属性 属性是类的成员变量,用于存储对象的数据。在Python中,属性可以分为类属性和实例属性。 1.1 类属性 类属性是被该类的所有实例共享的变量。可以通过类名或实例进行访问和修改。 class MyClass: class_attr = 10 # 类属性 # 访问类属性 print(MyClas…

    other 2023年6月28日
    00
  • CAD怎么创建块和分解块?

    以下是在CAD软件中创建块和分解块的完整攻略: 创建块 打开CAD软件,并打开您要创建块的绘图文件。 选择要创建块的对象,可以是单个对象或多个对象。 在CAD软件的菜单栏中,找到“编辑”或“修改”等选项,点击打开下拉菜单。 在下拉菜单中,找到“创建块”或类似的选项,点击进入块创建界面。 在块创建界面中,输入块的名称,并根据需要设置其他属性,如插入点、旋转角度…

    other 2023年10月16日
    00
合作推广
合作推广
分享本页
返回顶部