C++笔记之从使用函数指针和typedef到使用std::function和using
code review!
文章目录
- C++笔记之从使用函数指针和typedef到使用std::function和using
- 1.回顾函数指针的用法
- 2.函数指针结合typedef
- 3.使用std::function来重写代码
- 4.在使用std::function时,你无需显式声明函数指针类型或使用typedef,std::function会自动推导参数和返回类型。
- 5.使用 std::function和using来重写代码
- 6.附:本笔记中的代码
1.回顾函数指针的用法
运行
2.函数指针结合typedef
运行
3.使用std::function来重写代码
运行
4.在使用std::function时,你无需显式声明函数指针类型或使用typedef,std::function会自动推导参数和返回类型。
5.使用 std::function和using来重写代码
6.附:本笔记中的代码
#include <stdio.h>
void print(int a) {
printf("%d 调用了print函数\n", a);
return;
}
int main() {
// 第1种写法
void (*p1)(int);
p1 = print;
p1(1);
// 第2种写法
void (*p2)(int);
p2 = print;
(*p2)(2);
// 第3种写法
typedef void (*PF)(int);
PF p3 = print;
p3(3);
// 第4种写法
typedef void (*PF)(int);
PF p4 = print;
(*p4)(4);
return 0;
}
#include <iostream>
#include <functional>
void print(int a) {
std::cout << a << " 调用了print函数" << std::endl;
}
int main() {
// 第1种写法
std::function<void(int)> p1 = print;
p1(1);
// 第2种写法
auto p3 = std::function<void(int)>(print);
p3(3);
return 0;
}
#include <iostream>
#include <functional>
// 定义一个函数类型,用于包装参数为int、返回类型为void的函数
using PF = std::function<void(int)>;
// 实现print函数
void print(int a) {
std::cout << a << " 调用了print函数" << std::endl;
}
int main() {
// 创建一个函数对象,并将print函数赋值给它
PF p1 = print;
// 调用函数对象,即调用print函数
p1(1);
return 0;
}