随笔分类 -  编程语言

摘要:# 移动语义和完美转发浅析 ## 移动语义基础 ### 为什么要引入移动语义? ```cpp vector v1{1, 2, 3, 4, 5}; vector v2; v2 = v1; ``` 在移动语义出现前,我们拷贝一个 vector 对象,逻辑上可以分为两步: - 在堆上分配一块空间 - 将 阅读全文
posted @ 2022-07-23 16:41 路过的摸鱼侠 阅读(1146) 评论(1) 推荐(2) 编辑
摘要:# C++ 智能指针浅析 为了解决 C++ 中内存管理这个老大难问题,C++ 11 中提供了三种可用的智能指针。(早期标准库中还存在一种 auto_ptr,但由于设计上的缺陷,已经被 unique_ptr 取代了) 智能指针不仅能用来管理动态内存,还能用来管理其他类型的资源,比如互斥锁、数据库连接等 阅读全文
posted @ 2022-06-08 20:38 路过的摸鱼侠 阅读(1260) 评论(0) 推荐(6) 编辑
摘要:# C++ 对象模型浅析 本文希望从这个角度来理解 C++ 对象模型:假设我们作为一门编程语言的设计者,要实现面向对象的三大基本特性:封装、继承、多态,同时要满足与 C 兼容和 zero overhead 这两点约束。我们将带着这种观点去剖析 C++ 部分语言特性的实现。 在学习对象模型的时候,要注 阅读全文
posted @ 2022-06-01 23:20 路过的摸鱼侠 阅读(978) 评论(0) 推荐(2) 编辑
摘要:# C++ 通用引用 `&&` 并不是在所有情况下都代表右值引用。 ```cpp Widget&& var1 = someWidget; // here, “&&” means rvalue reference auto&& var2 = var1; // here, “&&” does not m 阅读全文
posted @ 2022-02-26 23:04 路过的摸鱼侠 阅读(604) 评论(0) 推荐(2) 编辑
摘要:# C++ 左值和右值 C++中值有两个独立的属性 - 有身份(has identity):或者说,有地址,有指向它的指针 - 有身份的值统称为 glvalue (“generalized” lvalue) - 可以被移动(can be moved from) - 可以移动的值统称为 rvalue 阅读全文
posted @ 2022-02-23 21:39 路过的摸鱼侠 阅读(166) 评论(0) 推荐(0) 编辑
摘要:# C++ 列表初始化 C++11 中,引入了用 `{}` 执行初始化的统一形式,C++11 称这种形式为统一初始化(Uniform initialization) 使用这种形式,可以解决所谓的“C++最令人恼怒的解析问题” ## 最令人恼怒的解析问题 该问题源于函数风格的转型和函数声明之间的相似性 阅读全文
posted @ 2022-02-23 21:11 路过的摸鱼侠 阅读(754) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示