c++11
文章平均质量分 85
主要归纳c++11的语法特性
私房菜
独乐乐不如众乐乐!!!!
展开
-
新开分栏 ----- 前言
一直在纠结要不要新开C++11 这个分栏,很尴尬的是特性于11年发布的,中间经过了好几个修改、完善的特性版本,21的特性都快出来了,特性、语法网上都一堆了 ,感觉实在没有必要。但是,回想自己写博客的初衷:记录自己的理解,也能方便他人。本人是一个比较喜欢专研的一枚小伙,更喜欢将自己遇到的东西分享出来,知识无界限的,更何况或多或少能帮助到别人!所以,最终还是决定新开这个分栏,用以记录以C++11 特性为开篇的语法特性,特别是在后期版本中大变样的特性,将这些都以C++11 开篇,然后分离、对比出来。原创 2021-09-13 14:56:33 · 497 阅读 · 1 评论 -
C++11 关键字 =default 和 =delete
如果程序没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,编译器会隐式地为这个类生成一个默认的特殊成员函数。但是如果X 显式的自定义了非默认构造函数,却没有定义默认构造函数,下面的代码会出现编译错误。不能看到上面的例子中,工作量不大,就认为上面的第一个问题不存在。为了解决上述的两个问题,C++ 11标准引入了一个新特性:default 函数。原创 2023-04-23 15:23:57 · 894 阅读 · 0 评论 -
c++11 关键字 override 使用
1. 功能用在类中成员函数声明的地方,用以标记一个virtual function 是重写另一个 virtual function;2. 语法只声明时,override 紧跟参数的右括号,如果是纯虚函数,override 会出现在= 0之前;类中定义时,override 在 函数体之前;原创 2023-03-01 10:34:51 · 619 阅读 · 0 评论 -
c++11 关键字 final 使用
用以指定一个 virtual function 不能被派生类重写;或者指定一个 class 不能被继承;原创 2023-02-28 17:07:35 · 1573 阅读 · 0 评论 -
c++11 weak_ptr 源码分析
写在最前。。。0. 前言所谓智能指针,可以从字面上理解为“智能”的指针。具体来讲,智能指针和普通指针的用法是相似的,不同之处在于,智能指针可以在适当时机自动释放分配的内存。也就是说,使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。由此可见,C++ 也逐渐开始支持垃圾回收机制了,尽管目前支持程度还有限。c++11 中发布了shared_ptr、unique_ptr、weak_ptr 用以资源的管理,都是定义在memory 这个头文件中。std::shared_ptr 允.原创 2021-09-17 11:34:45 · 1268 阅读 · 0 评论 -
c++11 unique_ptr 与 make_unique源码剖析
写在最前。。。0. 前言所谓智能指针,可以从字面上理解为“智能”的指针。具体来讲,智能指针和普通指针的用法是相似的,不同之处在于,智能指针可以在适当时机自动释放分配的内存。也就是说,使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。由此可见,C++ 也逐渐开始支持垃圾回收机制了,尽管目前支持程度还有限。c++11 中发布了shared_ptr、unique_ptr、weak_ptr 用以资源的管理,都是定义在memory 这个头文件中。std::shared_pt..原创 2021-09-17 10:52:32 · 8204 阅读 · 0 评论 -
c++11 shared_ptr 与 make_shared源码剖析
所谓智能指针,可以从字面上理解为“智能”的指针。具体来讲,智能指针和普通指针的用法是相似的,不同之处在于,智能指针可以在适当时机自动释放分配的内存。也就是说,使用智能指针可以很好地避免“忘记释放内存而导致内存泄漏”问题出现。由此可见,C++ 也逐渐开始支持垃圾回收机制了,尽管目前支持程度还有限。c++11 中发布了shared_ptrunique_ptrweak_ptr用以资源的管理,都是定义在memory 这个头文件中。原创 2021-09-16 20:41:43 · 3493 阅读 · 0 评论 -
c++11 move和forward 源码剖析
写在最前。。。0. 前言在<c++11 左值、右值、左值引用、右值引用等概念> 一文中简单介绍了c++11 后对于左值、右值、左值引用、右值引用的定义和使用。需要注意个概念,引用只是一个“别名”,c++只是为了区分是左值的引用还是右值的引用,用了两个符号区分:& 和 &&。1. 实例开路#include <iostream>using namespace std;class demo{public: demo()...原创 2021-09-16 16:08:44 · 647 阅读 · 2 评论 -
c++11 左值、右值、左值引用、右值引用等概念
C++左值和右值在 C++ 或者 C 语言中,一个表达式(可以是字面量、变量、对象、函数的返回值等)根据其使用场景不同,分为左值表达式和右值表达式。确切的说 C++ 中左值和右值的概念是从 C 语言继承过来的。值得一提的是,左值的英文简写为“lvalue”,右值的英文简写为“rvalue”。很多人认为它们分别是"left value"、"right value" 的缩写,其实不然。lvalue 是“loactor value”的缩写,可意为存储在内存中、有明确存储地址(可寻址)的数据,而 rval原创 2021-09-16 10:48:58 · 438 阅读 · 0 评论 -
c++11 lambda 原理剖析和安全使用
0. 前言Constructs aclosure: an unnamed function object capable of capturing variables in scope.lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数后,C++11 标.原创 2021-09-14 15:59:04 · 871 阅读 · 0 评论 -
c++11 std::decay源码剖析
0. 前言在 《c++11 std::is_same》https://justinwei.blog.csdn.net/article/details/120268292中提到is_same 是严格的类型比对,包含了CV 属性的对比,例如 int 和const int 在is_same 中不是一个类型,返回值也是为false。但是有些时候我们想要排除CV属性进行浅层次比对,怎么办?本文的decay 可以做到!1. 头文件#include <type_traits>2. .原创 2021-09-13 17:13:03 · 2809 阅读 · 1 评论 -
c++11 std::is_same 源码剖析
头文件#include <type_traits>声明//since c++11template <class T, class U> struct is_same;//since c++17template <class T, class U> inline constexpr bool is_same_v = is_same<T, U>::value; is_same 是在c++11 中发布的,在c++17 中...原创 2021-09-13 16:37:53 · 4054 阅读 · 0 评论