![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语言特性
文章平均质量分 58
rosemary512
这个作者很懒,什么都没留下…
展开
-
线程管理
线程管理线程管理基础启动一个线程这个章节涵盖了开启线程, 各种在线程上运行指定代码的方式等待线程结束线程的唯一标识好了,你已经决定在你应用上使用并发. 更具体地说是你决定使用多线程了. 那么现在, 怎么启动这些线程? 怎么检测它们已经结束了? 怎么检测它们? C++标准库让大多数线程管理的任务相对简单, 线程通过std::thread对象管理所有的事情. 对于那些不是那么简单的任务, C++标准库提供了一定的灵活性能够让你使用这些基础模块构建你需要的复杂场景.在这个章节中, 以一下的一些原创 2021-04-06 10:14:45 · 84 阅读 · 0 评论 -
C++ 并发 Hello World
C++ 并发 Hello World什么是并发计算机系统中的并发为什么使用并发C++中的并发和多线程开始构建一个简单的多线程应用这个章节包含下面的几个话题什么是并发和多线程你为什么要在你的程序中使用并发和多线程C++ 并发支持的历史一个简单的C++多线程程序是什么样的什么是并发最简单和基础的层次来说, 并发是两个或者两个以上的独立活动在同一时刻发生. 譬如我们能够一般走路一边说话, 一双手可以同时处理不同的事. 当然我们每个人也在同时做着不同的事情- 你可以看足球而我正在游泳.计算机原创 2021-04-01 17:37:14 · 177 阅读 · 0 评论 -
用户自定义字面量
用户定义字面量cppreference user literal通过定义用户定义的后缀, 允许整数, 浮点数, 字符以及字符串字面量产生用户定义类型的对象.struct Wallt {unsigned int v;};Wallt operator "" _w(unsigned long long v) { return {(unsigned int)v};}输出:1024...原创 2021-02-23 14:14:05 · 132 阅读 · 0 评论 -
final与override
final与overrideFinalOverrideFinal指定某个虚函数不能在子类中被覆盖,或某个类不能被子类继承struct Base { virtual void foo() final;};struct A : Base { void foo();};报错:cannot override ‘final’ function “Base::foo” (declared at line 4)C/C++(1850)struct Base final { vi原创 2021-02-23 13:33:35 · 966 阅读 · 0 评论 -
POD
POD描述平凡的(trivial)标准布局的(standard layout)standard layout对C++对象模型的影响怎么判断POD?描述POD(Plain Old Data),通常用于说明一个类型的属性.C++11将POD划分为两个基本概念的合集:平凡的(trivial)标准布局的(standard layout)平凡的(trivial)通常情况下, 一个平凡的类或结构体应该符合以下定义(1) 拥有平凡的默认构造函数(trivial constructor)和析构函数(tri原创 2021-02-20 23:08:09 · 97 阅读 · 0 评论 -
类的特殊成员函数
类的特殊成员函数默认构造函数描述拷贝构造函数 & 拷贝赋值运算符移动构造函数 & 移动赋值运算符(C++11)转换构造函数is_convertible继承构造函数之前现在委派构造函数没有使用构造函数的场景委派构造函数使用场景析构函数默认构造函数描述默认构造函数是可以无实参调用的构造函数(以空参数列表定义,或为每个形参提供默认实参而定义).拥有公开默认构造函数的类型是可默认构造(DefaultConstructible)的拷贝构造函数 & 拷贝赋值运算符class A {原创 2021-02-20 17:36:00 · 288 阅读 · 0 评论 -
alignof和alignas
alignof和alignasalignasalignof示例解释test2test1test3alignas设置对齐字节alignof获得对齐字节数示例#include <iostream>struct alignas(16)test1 { unsigned char c; int i; double d;};struct alignas(8)test3 { unsigned char c; int i; double d;原创 2021-01-29 23:00:09 · 293 阅读 · 0 评论 -
Unicode字符串字面量
Unicode字符串字面量语法解释示例解释语法“串字符序列”(1)L"串字符序列"(2)u8"串字符序列"(3)u"串字符序列"(4)U"串字符序列"(5)前缀(可选)R"分隔符(原始字符)分隔符"(6)解释串字符序列 - 零或更多个串字符的序列. 串字符是下列之一来自源字符集的字符, 除了双引号", 反斜杠\或换行符转义序列, 定义于转移序列通用字符名, 定义于转义序列前缀 - L, u8, u, U之一分隔符 - 除原创 2021-01-29 14:48:55 · 295 阅读 · 0 评论 -
char16_t与char32_t
char16_t与char32_tchar16_tchar32_tchar16_tUTF-16字符表示的类型, 要求大到足以表示任何UTF-16编码单元(16位).它与std::uint_least16_t具有相同的大小, 符号性和对齐, 但它时独立的类型char32_tUTF-32字符表示的类型, 要求大到足以表示任何UTF-32编码单元(32位).它与std::uint_least32_t具有相同的大小, 符号性和对齐, 但它时独立的类型...原创 2021-01-29 13:34:38 · 682 阅读 · 0 评论 -
弃置函数
弃置函数描述描述如果取代函数体而使用特殊语法**= delete**; 则该函数被定义为弃置的(deleted).任何弃置函数的使用都是非良构的(程序无法编译). 这包含调用, 包括显示(以函数调用运算符)及隐式(对弃置函数的重载运算符, 特殊成员函数, 分配函数等的调用), 构成指向弃置函数的指针或成员指针, 甚或是在不求值表达式中使用弃置函数. 但是允许隐式ODR式使用刚好被弃置的非纯虚成员函数若函数被重载, 则首先进行重载决议, 且仅当选择了弃置函数时程序才非良构struct sometype原创 2021-01-29 12:47:13 · 297 阅读 · 1 评论 -
基于范围的for循环
基于范围的for循环描述语法解释示例描述在一个范围上执行for循环用作对范围中的各个值(如容器中的所有元素)进行操作的传统for循环更加可读的等价版本语法属性(可选) for (范围声明: 范围表达式) 循环语句属性 - 任何数量的属性范围声明 - 一个具名变量的声明, 其类型是由范围表达式所表示的序列的元素的类型, 或该类型的引用. 通常用auto 说明符进行自动类型推导.范围表达式 - 任何可以表示一个合适的序列(数组, 或定义了begin 和end成员函数或自由函数的对象)的表达式,原创 2021-01-29 10:40:11 · 833 阅读 · 0 评论 -
nullptr
nullptr为什么引入nullptr为什么引入nullptr在C++98/03标准中, 将一个指针初始化为空指针int *ptr = 0;int *p = NULLNULL并不是C++的关键字, 它是C++定义的宏,并且字面量为0.(#defeine NULL 0)看例子:在这里插入代码片...原创 2021-01-08 14:41:30 · 997 阅读 · 0 评论 -
long long
long long基本数据类型long long 取值范围基本数据类型目标编译器: x86_64-linux-gnu- 整数类型 等价类型 占用字节数 short short int 2 bytes signed short signed short int unsigned short unsigned short int 2 bytes unsigned short int int int 4 bytes原创 2021-01-07 11:18:42 · 176 阅读 · 0 评论 -
static_assert
目录static_assert声明语法解释注解运行结果:static_assert声明进行编译时语言检查语法static_assert(布尔常量表达式, 消息) c++11起 static_assert(布尔常量表达式) c++17起 解释布尔常量表达式 - 按语境转换成bool类型的常量表达式消息 - 当布尔常量表达式为false时,将出现的可选的字符串字面量static_assert可出现在命名空间和作用域中(作...原创 2020-12-12 22:53:52 · 281 阅读 · 0 评论 -
C++11 新特性
https://zh.cppreference.com/w/cpp/11核心语言功能特性auto与decltype 预置与弃置函数 final与override 尾随返回类型 右值引用 移动构造函数与移动赋值运算符 有作用域枚举 constexpr与字面类型 列表初始化 委托与继承的构造函数 花括号或等号初始化器 nullptr long long char16_t与char32_t 类型别名 变参数模板 推广的(非平凡)联合体 推广的POD(平凡类型与标准布局类型原创 2020-12-12 21:01:49 · 117 阅读 · 1 评论 -
C++11 并发指南 笔记
https://www.cnblogs.com/haippy/p/3235560.html原创 2020-12-12 20:42:14 · 81 阅读 · 1 评论 -
C++ const
const在C++中用来修饰内置类型变量, 自定义对象, 成员函数, 返回值, 函数参数. C++ const 允许指定一个语义结束, 编译器会强制实施这个约束, 允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变, 就应该明确使用const, 这样可以获得编译器的帮助.const 修饰普通类型的变量Case1#include <iostream>int ...原创 2020-01-25 20:26:03 · 122 阅读 · 0 评论 -
C++中assert函数的用法介绍
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:[cpp] view plaincopy#inclide void assert(int expression); assert的作用是先计算表达式expression,如果其值为假(即为0),那么它先想stderr打印一条出错信息,谈后转载 2014-10-22 09:31:57 · 305 阅读 · 0 评论