当前位置: 首页 > news >正文

c++基础28函数的类型

函数的类型

  • 基本用法
  • 例子
    • using
    • fucntion

基本用法

在C++中,函数类型是指函数的签名,包括返回类型、参数类型以及参数的数量。函数类型可以用来声明函数指针、函数引用或者作为模板参数。

  • 函数也可当成一种数据类型
  1. 函数指针
    函数指针可以指向一个函数,其类型由返回类型、参数列表和const修饰符(如果有)决定。例如:

    • funcPtr指向函数myFunction
    int myFunction(int, double) 
    int (*funcPtr)(int, double) = myFunction; // 指向返回int,接受int和double参数的函数
    
    • using别名声明(Type Alias)
      using可以用来为类型创建别名,使得类型名称更短或更易于理解。这对于模板类型特别有用。
    using MyInt = int; // 将MyInt作为int的别名
    using Vec = std::vector<int>; // 将Vec作为std::vector<int>的别名
    
  2. 函数引用
    函数引用必须被初始化为一个具体的函数,并且不能被重新赋值。函数引用的类型与它所引用的函数的类型相同。例如:

    void (&funcRef)(int) = myFunction; // 引用返回void,接受int参数的函数
    
  3. 函数作为参数
    可以将函数作为参数传递给另一个函数,此时需要指定函数的类型。例如:

    void callFunction(void (*func)(int)) {func(10);
    }
    
  4. std::function
    C++11引入了std::function,这是一个可以存储、调用和复制任何可调用对象(函数、lambda表达式、函数对象等)的类模板。例如:

#include <functional>
#include <iostream>void greet() {std::cout << "Hello, World!" << std::endl;
}int main() {std::function<void()> func = greet;func(); // 输出 "Hello, World!"
}

例子

using

#include<iostream>
using namespace std;
double ma(double a,double b){return a+b; 
}
int main(void){double(* f)(double,double)=ma;double(*f1[])(double,double){ma,ma};cout<<f(1,3)<<endl;cout<<f1[0](5,5)<<endl;cout<<"********"<<endl;//使用using别名 using m_type=double(*)(double,double);m_type fun = ma;m_type fun1[]{ma,ma};cout<<fun(5,4)<<endl;cout<<fun1[1](100,50)<<endl;
}

fucntion

#include <functional>
#include <iostream>
// 一个简单的函数
int add(int a, int b) {return a + b;
}
int main() {// 使用函数function,需用头文件 <functional>std::function<int(int, int)> func = add;std::cout << "10 + 5 = " << func(10, 5) << std::endl;return 0;
}
http://www.lryc.cn/news/481887.html

相关文章:

  • Elasticsearch(四):query_string查询介绍
  • 超好用shell脚本NuShell mac安装
  • Vue禁止打开控制台/前端禁止打开控制台方法/禁用F12/禁用右键
  • volatile关键字
  • [Linux] 共享内存
  • 网络的基础
  • 金融学期末速成笔记
  • 【Elasticsearch入门到落地】1、初识Elasticsearch
  • 电子版产品册代替纸质版产品册,开源节流!
  • npm i忽略依赖冲突
  • 商品,订单业务流程梳理一
  • Spring中的 bean 标签中的 factory-bean , factory-method
  • 车间管理|基于SprinBoot+vue工厂车间管理系统设计与实现(源码+数据库+文档)
  • C#实战:使用腾讯云识别服务轻松提取火车票信息
  • 王珊数据库系统概论第六版PDF+第五版课后答案+课件
  • Spring学习笔记(四)
  • CALL处 F8的“bug“
  • Verilog中的有符号数与无符号数
  • 15分钟学 Go 第 47 天 :并发进阶——深入了解Go语言的并发模型!
  • 前端代码分析题(选择题、分析题)——this指向、原型链分析
  • react 组件应用
  • mysql 快速解决死锁方式
  • RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)
  • 在 WPF 中,绑定机制是如何工作的?WPF数据绑定机制解析
  • pwn学习笔记(12)--Chunk Extend and Overlapping
  • java基础面试题六集合框架
  • 2024年12月一区SCI-指数-三角优化算法ETO-附Matlab免费代码
  • 设置服务器ssh连接超时时间
  • Dubbo分布式日志跟踪实现
  • EPSON机械手与第三方相机的校准功能设计By python