【C++学习篇】C++11第三期

目录

​编辑

[1. 新的类功能](#1. 新的类功能)

[1.1 默认的移动构造和移动赋值](#1.1 默认的移动构造和移动赋值)

[1.2 defult和delete](#1.2 defult和delete)

[2. 包装器](#2. 包装器)

[2.1 function](#2.1 function)

[2.1.1 为什么调用类域里面的静态函数不需要定义对象?](#2.1.1 为什么调用类域里面的静态函数不需要定义对象?)

[2.1.2 我们来回忆一下,函数指针调用的方式!!!](#2.1.2 我们来回忆一下,函数指针调用的方式!!!)

[2.2 bind](#2.2 bind)


1. 新的类功能

1.1 默认的移动构造和移动赋值

C++11 新增了两个默认成员函数,移动构造函数和移动赋值运算符重载。

  1. 没有⾃⼰实现移动构造函数,且**没有实现析构函数 、拷⻉构造、拷⻉赋值重载中的任意⼀个。****那么编译器会⾃动⽣成⼀个默认移动构造。**默认⽣成的移动构造函数,对于内置类型成员会执

⾏逐成员按字节拷⻉,⾃定义类型成员,则需要看这个成员是否实现移动构造,如果实现了就调⽤移动构造,没有实现就调⽤拷⻉构造。

  1. 如果你没有⾃⼰实现移动赋值重载函数,且**没有实现析构函数 、拷⻉构造、拷⻉赋值重载中的任意⼀个,**那么编译器会⾃动⽣成⼀个默认移动赋值。默认⽣成的移动构造函数,对于内置类型成员会执⾏逐成员按字节拷⻉,⾃定义类型成员,则需要看这个成员是否实现移动赋值,如果实现了就调⽤移动赋值,没有实现就调⽤拷⻉赋值。(默认移动赋值跟上⾯移动构造完全类似)

  2. 如果你提供了移动构造或者移动赋值,编译器不会⾃动提供拷⻉构造和拷⻉赋值。

1.2 default和delete

  1. C++11可以让你更好的控制要使⽤的默认函数。假设你要使⽤某个默认的函数,但是因为⼀些原因这个函数没有默认⽣成。⽐如:我们提供了拷⻉构造,就不会⽣成移动构造了,那么我们可以使⽤default关键字显⽰指定移动构造⽣成。

  2. 如果能想要限制某些默认函数的⽣成,在C++98中,是该函数设置成private,并且只声明补丁已,这样只要其他⼈想要调⽤就会报错。在C++11中更简单,只需在该函数声明加上=delete即可,该语法指⽰编译器不⽣成对应函数的默认版本,称=delete修饰的函数为删除函数。(=delete就是不允许拷贝)

2. 包装器

2.1 function

示例1:

示例2:包装其他类域里面的函数

2.1.1 为什么调用类域里面的静态函数不需要定义对象?

2.1.2 我们来回忆一下,函数指针调用的方式!!!

2.2 bind

  1. bind是⼀个函数模板,它也是⼀个可调⽤对象的包装器 ,可以把他看做⼀个函数适配器,对接收的fn可调⽤对象进⾏处理后返回⼀个可调⽤对象。 bind 可以**⽤**

  2. 调⽤bind的⼀般形式: auto newCallable = bind(callable,arg_list); 其中newCallable本⾝是⼀个可调⽤对象,arg_list是⼀个逗号分隔的参数列表,对应给定的callable的参数。当我们调⽤newCallable时,newCallable会调⽤callable,并传给它arg_list中的参数。

  3. arg_list中的参数可能包含形如_n的名字,其中n是⼀个整数,这些参数是占位符,表⽰newCallable的参数,它们占据了传递给newCallable的参数的位置。数值n表⽰⽣成的可调⽤对象中参数的位置:_1为newCallable的第⼀个参数,_2为第⼆个参数,以此类推。_1/_2/_3....这些占位符放到placeholders的⼀个命名空间中。

示例:

、

2.2.1 bind的常用于死绑一些参数

相关推荐
xailorliu5 分钟前
SLIC_超像素算法
c++·opencv·目标检测·机器学习·计算机视觉
苏打豆13 分钟前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
周杰偷奶茶1 小时前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
每天题库1 小时前
架子工脚手架工题库:安全操作考点与模拟题练习指南
学习·安全·考试·题库·考证
小小龙学IT1 小时前
snap7 开源西门子 S7 通信协议库深度解析
c++·开源
橙子圆1232 小时前
JUC之集合类不安全
java·开发语言
yangmu32032 小时前
Codex 提示词优化教程:用四要素把模糊需求变成可执行任务
人工智能·学习
阿里嘎多学长2 小时前
2026-09-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Bruce_Liuxiaowei2 小时前
网页版 DeepSeek “harness desktop“ WebGL 上下文创建失败排查实录
开发语言·javascript·webgl
狗凯之家源码网2 小时前
PHP 用户反馈系统源码深度评测与实战指南
开发语言·php·用户反馈系统