- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 C++20 协程(一)
协程是C++20最重要的特性,C++的异步编程模式有了协程将会变得简单。协程是能暂停执行以在之后恢复的函数。C++20协程是无栈的在堆上分配一个协程帧,把函数的参数拷贝到协程帧里,会在协程帧里创建promise对象。它们通过返回到调用方暂停执行,并且从栈分离存储恢复执行需要的数据。这样就可以编写异步执行的顺序代码(例如不使用显式的回调来处理非阻塞 I/O),还支持对惰性计算的无限序列上的算法及其他用途。协程与函数协程是一个有点特殊的函数,相比普通函数协程的特殊之处在于它可以暂停和恢复,如下图所示:
2022-03-10 23:00:46
2842
原创 对RAII资源管理的理解
RAII是C++语言中常见习惯用法,全称为“Resource Acquisition Is Initialization”意为资源获取就是初始化。通常用来管理对象内存资源,已经比如文件描述符、互斥锁等资源。RAII基本原理就是使用局部对象管理资源,依赖于构造函数和析构函数的性质以及它们与异常处理的交互作用。我们考虑如下情况:class A { ..... }; //某资源对象...
2018-10-30 00:05:40
296
转载 C++的直接初始化与复制初始化的区别
本文转载自:负一的平方根 https://sqrt-1.me/?p=241 修改了部分地方C++中的直接初始化指的是直接调用类的构造函数进行初始化,如下例如string a; //调用默认构造函数string a("hello"); //调用参数为const char *类型的构造函数string b(a); //调用拷贝构造函数复制初始化指的是用“=”号来初始...
2018-10-27 22:20:30
2159
原创 C++ lambda表达式
//C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下://[函数对象参数](操作符重载函数参数) mutable或exception声明->返回值类型{ 函数体 }//可以看到,Lambda主要分为五个部分://[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型、{ 函数体...
2018-10-25 18:13:01
112
原创 C/C++ 关于左值、右值、引用知识点
左值:就是可以放在赋值号左边被赋值的值,必须要在内存有实体右值:当在赋值号右边取出值赋给其他变量的值右值可以在内存也可以在CPU右值是指临时的对象,它们只在当前的语句中有效C++primer中对 对象的定义:对象是指一块能存储数据并具有某种类型的内存空间一个对象a,它有值和地址&a,运行程序时,计算机会为该对象分配存储空间,来存储该对象的值,我们通过该对象的地址,来访问存储空...
2018-10-22 15:54:48
155
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人