Luyoung
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
C++:完美转发(一)(std::forward)

C++:完美转发(一)(std::forward)

一、理解引用折叠(一)引用折叠  1. 在C++中,“引用的引用”是非法的。像 auto& &rx = x;(注意两个&之间有空格)这种直接定义引用的引用是不合法的,但是编译器在通过类型别名或模板参数推导等语境中,会间接定义出“引用的引用”,这时引用会形成“折叠”。   2. 引用折叠会发生在模板实例化、auto类型推导、创建和运用typedef和别名声明、以及decl
2024-05-12
C++
#c++
C++:移动语义(std::move)

C++:移动语义(std::move)

一、std::move(一)std::move 的原型123456 template<typename T> decltype(auto) move(T&& param) //注意,形参是个引用(万能引用){ using ReturnType = typename remove_reference<T>::type&&a
2024-05-11
C++
#c++
C++:左值(引用)&右值(引用)

C++:左值(引用)&右值(引用)

〇、前言本文会讨论C++中的左值,右值,左值引用,右值引用,以及会理清它们之间的关系。 一、左值与右值(一)概述  1. 左值是一般指表达式结束后依然存在的持久化对象。右值指表达式结束时就不再存在的临时对象。便捷的判断方法:能对表达式取地址、有名字的对象为左值。反之,不能取地址、匿名的对象为右值。   2. C++ 表达式(运算符带上其操作数、字面量、变量名等)有两种独立的属性:类型和值类别
2024-05-10
C++
#c++
C++并发:线程函数传参(二)

C++并发:线程函数传参(二)

正文传参中的陷阱  1. 向std::thread 构造函数传参:所有参数(含第1个参数可调用对象)均按值并以副本的形式保存在 std::thread 对象中的tuple里。这一点的实现类似于std::bind。如果要达到按引用传参的效果,可使用std::ref来传递。   2. 向线程函数的传参:由于std::thread 对象里保存的是参数的副本,为了效率同时兼顾一些只移动类型的对象,所有
2024-05-10
C++
#c++ #多线程
C++并发:线程函数传参(一)

C++并发:线程函数传参(一)

一、问题当创建 std::thread 对象时,传递给线程的函数的所有参数都会被复制或移动到新创建的线程的内存空间中。这是为了确保线程的执行不会依赖于父线程可能销毁的栈上变量,从这个机制上看,这是很合理的。 在新的线程的栈上,这些变量都会以右值的方式传递给线程函数,这主要是为了提高传参的性能。但是在某些情况下,这些右值并不能满足线程函数的参数。如果线程函数需要引用参数,直接传递普通变量会因为无
2024-05-09
C++
#c++ #多线程
macOS DOSBox 汇编环境搭建

macOS DOSBox 汇编环境搭建

正文一、安装DOSBox首先前往DOSBox的官网下载并安装最新版本的DOSBox。 二、下载必备的工具包在用户目录下新建一个文件夹,比如 dosbox: 1mkdir dosbox 然后下载一些常用的工具。下载好了后,将这些工具解压,重新放在 dosbox 这个文件夹中: 三、配置自动挂载由于DOSBox启动之后所有的设置都会复原,因此要实现自动挂载需要配置自动运行命令。 打开Termin
2024-05-05
经验方法 > 8086
#汇编 #8086 #macos #DOSBox
CM3:lldb 调试 qemu 跑的程序

CM3:lldb 调试 qemu 跑的程序

正文环境:macOS M1。QEMU可以通过启动一个GDB调试端口来允许使用GDB调试正在运行的虚拟机,我们要做的就是通过 gdb 或者 lldb 连接到这个端口,然后进行调试。我们先写一个简单的CM3 程序: 123456789101112131415161718192021 .equ STACK_TOP, 0x20000800 .text .global _start
2024-04-28
CM3
#汇编 #QEMU #CM3
CM3:qemu执行汇编

CM3:qemu执行汇编

正文环境:macOS M1。前文讨论了 qemu 模拟8086 的平台运行8086 汇编代码,本文将讨论 qemu 模拟arm 平台运行 CM3 代码。代码: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162.sy
2024-04-27
CM3
#汇编 #QEMU #CM3
8086:qemu执行汇编

8086:qemu执行汇编

正文环境:macOS M1。 QEMU(Quick EMUlator)是一个开源的虚拟机监视器,可以模拟多种硬件平台,包括处理器架构、设备和操作系统。QEMU具有以下主要功能和用途: 硬件模拟器:QEMU可以模拟多种处理器架构,如x86、ARM、MIPS等,以及各种设备,如网络适配器、显卡、存储设备等。这使得开发人员可以在虚拟环境中测试和调试他们的软件,而无需实际硬件设备。 虚拟机管理:Q
2024-04-26
8086
#汇编 #QEMU #8086
C++:函数符(一)

C++:函数符(一)

正文函数对象也叫函数符,函数符是可以以函数方式与()结合使用的任意对象。这包括函数名、指向函数的指针和重载了()运算符的类对象。 上面这句话的意思是指:函数名、指向函数的指针和重载了括号运算符的类对象与括号结合,从而以函数方式实现某种功能。对于 for_each(),第三个参数我们一般可以写一个函数名,或者类的对象(该类必须对括号运算符进行了重载),但是不可以为一个函数指针,因为函数指针的类型
2024-04-24
C++
#c++
1…1314151617…26

搜索

Hexo Fluid
总访问量 次 总访客数 人