iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ 函数的介绍
  • 724
分享到

C++ 函数的介绍

2024-04-02 19:04:59 724人浏览 薄情痞子
摘要

目录一、基础二、参数三、返回类型四、函数重载与解析五、内联函数1.constexpr函数六、函数指针七、思考1、我们常常会见到如下代码,是由什么作用?2、可以用别名定义一个函数类型吗

一、基础

函数:封装了一段代码,可以在一次执行过程中被反复调用,包含函数头和函数体;

函数头:

  • 函数名称(标识符),用于后续的调用;
  • 形式参数,代表函数的输入参数;
  • 返回类型,函数执行完成后返回结果的类型;

函数体:一个语句块(block),包含具体的计算逻辑;

函数的声明与定义:

  • 函数声明只包含函数头,不包含函数体,通常在头文件中;
  • 函数声明可以出现多次,定义通常出现一次(也有例外);

函数调用:

  • 需要提供函数名与实际参数;
  • 实际参数拷贝初始化给形式参数;
  • 返回值会拷贝给函数的调用者;
  • 栈帧结构(可自行了解下);

二、参数

对于非模板函数来说,其每个形参都有确定的类型,但形参可以没有名称;

实参到形参的拷贝顺序是不确定的;

函数的形参的传递一般分为:传值、传址、传引用;

变长参数的定义:

1、使用initializer_list传递


#include <initializer_list>
void fun(std::initializer_list<int> a){}

int main
{
 fun({1, 2, 3, 4})
}

注意:该方法只能传递类型相同的变长参数;

  • 可变长度模板参数
  • 使用省略号表示形式参数(一般不使用)

函数的缺省实参注意点:

1、如果某个形参具有缺省参数,那么它右侧的形参都必须具有缺省实参;


void fun(int x=1, int y=2){} // 这里y必须给定缺省值


2、具有缺省实参的函数调用时,传入实参按照从左到右的顺序进行匹配;

3、在一个翻译单元中,每个形参的缺省实参只能定义一次;

4、缺省实参为对象时,实参的缺省值会随对象值的变化而变化;

main函数的版本:

  • 无形参版本(一般使用)
  • 带形参版本

int main(int arGC, char *argv[]) {}

argc是非负数,表述传入参数个数,argv是一个指针指向传输参数的数组头。

三、返回类型

返回类型的几种书写方式:

经典方法:位于函数头的前部,也是最常规的写法;

C++11引入的方式:位于函数头的尾部;


auto fun(int x) -> int
{
 return x*2;
}

C++14引入的方式:返回类型的自动推导;


auto fun(int a)
{
 return a;  // 会根据return语句进行推导
}

四、函数重载与解析

函数重载:使用相同的函数名定义多个函数,每个函数具有不同的参数列表;

注意:不能基于不同的返回类型进行重载;

名称查找:

  • 分为限定查找和非限定查找:有无限定在某个作用域中;
  • 非限定查找会进行域的逐级查找——名称隐藏;
  • 查找通常只会在已声明的名称集合中进行;

重载解析:在名称查找的基础上进一步选择合适的调用函数;

  • 过滤不能被调用的版本:参数个数不对、无法将实参转为形参、实参不满足形参的限制条件;

五、内联函数

定义:将比较简单的函数逻辑展开到调用函数的部分,避免栈帧销毁,提升性能;

关键字:inline,如果一个函数在多个翻译单元展开,加入这个关键字可以避免重复定义;

1.constexpr函数

定义:之前有介绍常量表达式时用到了该关键字,现在对于函数也可以用该关键字;

作用:使得函数在编译器被执行,当然在有变量情况下也可在运行期执行;


constexpr int fun(int x){
    // int y; std::cin >> y;  会报错,该语句需要用户传入参数,只能在运行期执行
 return x * 2;
}

int main
{
 constexpr int x = fun(2);  // 编译器会翻译成 move eax 4, 去掉constexpr也可以
 return x;
}

注意:constexpr函数中的语句必须是可以在编译器执行的语句;

拓展:关键字constevalc++20引入),函数只能在编译器执行;

六、函数指针

作用:可以用于高阶函数中,将函数指针作为参数;

代码案例:


int add(x) { return x + 1};
using T = int(int);
int fun(K* F, int x)
{
 int tmp = (*F)(x);
 return tmp * 2;
}

int main
{
 std::cout << fun(&add, 50) << std::endl;
}

说明:这就是用函数指针定义的一个高阶函数,在之后的很多高阶函数、泛型算法中也是这样的用法;

注意:当函数对象进行赋值或者返回值时,返回的是一个函数指针类型的对象;

七、思考

1、我们常常会见到如下代码,是由什么作用?


extern "C" 
int fun(int x, int y)
{
    return x + y;
}

C语言对于函数是不能重载的,当用C调用C++程序时,往往找不到C++编译后的函数名,可通过如上代码定义一个函数为C类型函数;

2、可以用别名定义一个函数类型吗?


using X = int[3];
X a;    // 这是定义了一个数组,同int a[3]

using X = int(int);
X fun;    // 这是定义了一个int返回类型的函数

函数也是有类型的,可以用别名定义,并且函数类型不包含形参名称,并且只能声明,不能定义;

总结:

本篇主要介绍了函数的基础概念以及一些特殊的函数方法和类型。重点需要注意的就是函数重载以及函数指针,这个在后续的模板以及泛型编程都会用到;下一篇将讨论C++中的内存,也是最重要的一个部分。

到此这篇关于C++ 函数的介绍的文章就介绍到这了,更多相关C++函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++ 函数的介绍

本文链接: https://www.lsjlt.com/news/159396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ 函数的介绍
    目录一、基础二、参数三、返回类型四、函数重载与解析五、内联函数1.constexpr函数六、函数指针七、思考1、我们常常会见到如下代码,是由什么作用?2、可以用别名定义一个函数类型吗...
    99+
    2024-04-02
  • C++中atof 函数的介绍
    目录一.atof 函数二.atof 函数函数实战一.atof 函数 在 stdlib.h 中 atof 函数,可用于将 char 字符串转为 float / double 浮点数类型...
    99+
    2024-04-02
  • 好用的C++stringFormat“函数”介绍
    我这个人总是喜欢在写代码时追求极致,比如总是纠结于变量的命名,内存的消耗,执行的效率,接口的便捷性,代码的可扩展性。。。但很多时候需要在他们之间做取舍,这就导致我在编码时经常陷入僵局...
    99+
    2024-04-02
  • C/C++文件的操作函数介绍
    这篇文章主要介绍“C/C++文件的操作函数介绍”,在日常操作中,相信很多人在C/C++文件的操作函数介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++文件的操作函数介绍”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • C++BoostEnableIf函数使用介绍
    目录一、说明二、Boost.EnableIf的示例练习一、说明 Boost.EnableIf Boost.Enable If 可以禁用重载函数模板或专用类模板。禁用意味着编译器忽略相...
    99+
    2022-11-21
    C++ Boost EnableIf C++ EnableIf函数
  • Python函数介绍:max函数的介绍及示例
    Python函数介绍:max函数的介绍及示例函数在Python编程中是非常重要的概念。Python内置了许多有用的函数,其中一个是max函数。本文将介绍max函数的用法以及示例代码,帮助读者更好地理解和运用。max函数的作用是返回给定参数的...
    99+
    2023-11-03
    Python 函数 max函数
  • Python函数介绍:exec函数的介绍及示例
    Python函数介绍:exec函数的介绍及示例引言:在Python中,exec是一种内置函数,它用于执行存储在字符串或文件中的Python代码。exec函数提供了一种动态执行代码的方式,使得程序可以在运行时根据需要生成、修改和执行代码。本文...
    99+
    2023-11-03
    示例 介绍 exec函数
  • Python函数介绍:tuple函数的介绍及示例
    Python函数介绍:tuple函数的介绍及示例在Python编程语言中,tuple(元组)是一种不可变的有序数据类型。它类似于列表,但与列表不同的是,元组一旦创建后就无法修改。元组可以包含不同类型的数据,并以小括号()来表示。tuple函...
    99+
    2023-11-04
    示例 Python函数 tuple函数
  • Python函数介绍:int函数的介绍及示例
    Python函数介绍:int函数的介绍及示例Python是一种强大的编程语言,其广泛用于数据分析、人工智能、web开发等领域。Python拥有众多内置函数,此篇文章将对Python中的一个常用函数——int进行介绍,并提供具体示例。一、in...
    99+
    2023-11-04
    示例 Python函数 Int函数
  • C++中strtok()函数的用法介绍
    函数原型:char *strtok(char *s, const char *delim);Function:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。D...
    99+
    2022-11-15
    strtok C++
  • Python函数介绍:map函数的介绍及示例
    Python函数介绍:map函数的介绍及示例在Python编程中,函数是一种非常重要的工具,可以用来封装一段可复用的代码。其中,map函数是一个强大且常用的函数,它可以对一个可迭代对象中的每一个元素应用一个指定的函数,然后返回一个新的可迭代...
    99+
    2023-11-03
    示例 Python函数 map函数
  • Python函数介绍:format函数的介绍及示例
    Python函数介绍:format函数的介绍及示例在Python中,format()函数是一个非常重要且常用的函数,它用于对字符串进行格式化处理。通过format()函数,我们可以将一些变量、数据和文字按照一定的格式拼接在一起,并输出成我们...
    99+
    2023-11-03
    介绍 关键词:Python函数 format函数
  • Python函数介绍:hasattr函数的介绍及示例
    Python函数介绍:hasattr函数的介绍及示例在Python中,hasattr()是一个内置函数。它的主要功能是检查一个对象是否有指定的属性或方法,并返回一个布尔值来指示是否存在。这个函数的使用方法非常简单,仅需要提供两个参数:一个对...
    99+
    2023-11-03
    示例 函数介绍 hasattr
  • Python函数介绍:zip函数的介绍及示例
    Python函数介绍:zip函数的介绍及示例Python是一种高级语言,它提供了许多有用的函数来帮助开发人员快速地编写程序。其中一个函数就是zip函数。Zip函数是Python中的内置函数之一,它可以接受一组可迭代对象(包括列表、元组、集合...
    99+
    2023-11-03
    示例 介绍 zip函数
  • Python函数介绍:slice函数的介绍及示例
    Python函数介绍:slice函数的介绍及示例Python是一种简单易学、功能强大的高级编程语言,拥有丰富的内置函数和标准库。其中,slice函数是Python中非常实用的一个函数,用于创建一个切片对象,用来切割序列(包括字符串、列表等)...
    99+
    2023-11-03
    示例 Python函数 关键词提取: slice函数
  • Python函数介绍:bin函数的介绍及示例
    Python函数介绍:bin函数的介绍及示例Python是一种强大而灵活的编程语言,它提供了许多内置函数,其中之一就是bin()函数。bin()函数用于将整数转换为二进制字符串。在本文中,将介绍bin()函数的...
    99+
    2023-11-04
    函数 关键词:Python bin函数
  • Python函数介绍:delattr函数的介绍及示例
    Python函数介绍:delattr函数的介绍及示例Python作为一门高级的编程语言,拥有丰富的内置函数库,提供了许多方便快捷的函数来进行各种操作。其中之一就是delattr函数。本文将详细介绍delattr函数的作用以及用法,并附上具体...
    99+
    2023-11-03
    Python 介绍 delattr函数
  • Python函数介绍:str函数的介绍及示例
    Python函数介绍:str函数的介绍及示例Python是一种简单易学的编程语言,拥有丰富的内置函数来帮助开发者处理数据。其中一个常用的内置函数是str函数。str函数主要用于将其他数据类型转换为字符串类型。str函数的用法如下:str(o...
    99+
    2023-11-03
    Python函数 str 的介绍及示例
  • Python函数介绍:reversed函数的介绍及示例
    Python函数介绍:reversed函数的介绍及示例在Python中,reversed()函数可以将一个序列类型的对象进行反转排列,返回一个包含了反转后元素的迭代器。在本文中,我们将介绍reversed()函数的具体用法,并提供一些代码示...
    99+
    2023-11-04
    Python函数/函数介绍/reversed函数/示例
  • Python函数介绍:ord函数的介绍及示例
    Python函数介绍:ord函数的介绍及示例在Python编程中,ord()函数是一个很有用的函数,它用于返回给定字符的Unicode数值,即该字符在Unicode表中的位置。本篇文章将介绍ord()函数的用法、语法以及...
    99+
    2023-11-04
    Python 函数 编程关键词: ord示例
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作