首页 > 编程语言 >现代C++(Modern C++)基本用法实践:零、概述&测试项目

现代C++(Modern C++)基本用法实践:零、概述&测试项目

时间:2023-07-13 13:00:53浏览次数:54  
标签:测试项目 Modern 实践 C++ 用法 现代 特性

序言

习惯上,我们把C++11之前的C++语法特性称之为“传统C++”,而把c++11之后的语法特性称之为现代C++。有一种说法称C++为中级语言,因为它的特性介于低级语言(如各类汇编语言)和高级语言(Python、C#)之间--一般来说,它在运行效率上比高级语言要高,而在开发效率上又比高级语言低一些。

随着C++的发展,它也逐渐在优化一些开发效率上的问题,提升C++开发者的工作效率,也拓展了一些实用的特性。

概述

这一系列的文章,参考 cpp reference(提供比较权威的C++特性文档),并结合实践,例举现代C++的一些主要的、常用的特性,其他特性或者细节,读者请自行搜索cpp reference或者其他参考资料。

下面是我列举的比较实用的特性:

  • 自动推导 | auto decltype
  • lambda 表达式
  • 移动(move)语义 | 右值(rvalue
  • 模板 | 变长参数模板 | 完美转发
  • 智能指针
  • 编译时程序 constexpr
  • 范围遍历
  • 线程支持

测试项目说明

测试项目Github仓库
参考文件ModernCppTest/ModernCppTestMain.Cpp,例举了各个特性相关的测试代码和注解。

目录

现代C++(Modern C++)基本用法实践:一、类型推导
现代C++(Modern C++)基本用法实践:二、Lambda表达式
现代C++(Modern C++)基本用法实践:三、移动语义
现代C++(Modern C++)基本用法实践:四、模板
现代C++(Modern C++)基本用法实践:五、智能指针
现代C++(Modern C++)基本用法实践:六、constexpr编译时计算
现代C++(Modern C++)基本用法实践:七、范围遍历
现代C++(Modern C++)基本用法实践:八、线程支持
现代C++(Modern C++)基本用法实践:N、其他零散的常用特性

标签:测试项目,Modern,实践,C++,用法,现代,特性
From: https://www.cnblogs.com/hggzhang/p/17523856.html

相关文章

  • 现代C++(Modern C++)基本用法实践:N、其他零散的常用特性
    概述这一篇简单介绍一些其他的比较实用的特性,如果读者想了解现代C++的全部特性,参考:cppreference其他特性预置和弃置函数default&delete在C++11中引入了default和delete关键字,允许程序员更加明确地控制类的默认操作(如默认构造函数,拷贝构造函数,拷贝赋值运算符,析构函数等)......
  • 现代C++(Modern C++)基本用法实践:八、线程支持
    概述在c++11之前,c++并未对线程编程提供直接的支持。在c++11之后,支持了线程管理、同步、条件变量等支持。在其他的c++库中(例如UE的线程库)还增加了多任务模型的抽象。用法举例参考测试项目的modrenc_auto_decltype.cpp文件主要内容:线程的创建使用future&async进行异步操作......
  • PAT-甲级-1007 Maximum Subsequence Sum C++
    Givenasequenceof K integers{ N1​, N2​,..., N​K }.Acontinuoussubsequenceisdefinedtobe{ Ni​, Ni+1​,..., Nj​ }where 1≤i≤j≤K.TheMaximumSubsequenceisthecontinuoussubsequencewhichhasthelargestsumofitselements.Fore......
  • c++ day 8
    今天终于来学习时间复杂度了当分析算法的时间复杂度时,我们通常关注以下几个方面来确定算法的执行时间:循环次数:循环是算法中常见的结构,它会重复执行一段代码。时间复杂度取决于循环的次数。例如,一个循环从1到n的遍历,时间复杂度就是O(n)。嵌套循环:如果算法中存在多个嵌套循环......
  • 【C++开源库】Windows 下编译 libcurl 库
    Whatislibcurl?libcurl是一个跨平台的网络协议库,支持http,https,ftp,gopher,telnet,dict,file,和ldap协议。libcurl同样支持HTTPS证书授权,HTTPPOST,HTTPPUT,FTP上传,HTTP基本表单上传,代理,cookies和用户认证。想要知道更多关于libcurl的介绍,可以到官网......
  • C++ 数据封装
     所有的C++程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。程序数据:数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装......
  • C++ 接口(抽象类)
     接口描述了类的行为和功能,而不需要完成类的特定实现。C++接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。https://www.lekaowang.com/cfa/oitt/......
  • C++计算机学院2023年度小学期编程实践课程(图书管理系统)[2023-07-12]
    C++计算机学院2023年度小学期编程实践课程(图书管理系统)[2023-07-12]计算机学院2023年度小学期编程实践课程上机实验题目(一)基于学生结构体数组的图书管理系统(40分)定义学生结构体类型的数组,静态初始化学生信息(不包括借书信息)。图书使用二维字符数组或字符指针数组单独......
  • C++ 傅里叶频谱的计算以及应用
    一维傅里叶频谱的计算#include<stdio.h>#include<math.h>#definepi3.1415926#definerows3#definecolums5typedefstruct{floatre;//reallyfloatim;//imaginary}complex,*pcomplex;complexcomplexadd(complexa,complexb)//复数加......
  • Qt/C++音视频开发46-音视频同步保存到MP4
    一、前言用ffmpeg单独做视频保存不难,单独做音频保存也不难,难的是音视频同步保存到MP4中,重点是音视频要同步,其实这也不难,只要播放那边音视频同步后的数据,写入到文件即可。最难的是在播放过程中不断随机的切换播放进度,而且还会暂停播放、暂停录制的情况出现,这些个复杂情况的出现,可......