3_C++2.0(C++ 11/14/17)
文章平均质量分 91
C++2.0(C++ 11/14/17)
梦心之魂
这个作者很懒,什么都没留下…
展开
-
【侯捷】C++2.0新特性(C++ 11/14)
111原创 2020-12-06 20:02:25 · 1495 阅读 · 1 评论 -
C++ 多线程编程
C++11之前,window和linux平台分别有各自的多线程标准,使用C++编写的多线程往往是依赖于特定平台的。Window平台提供用于多线程创建和管理的win32 api;Linux下则有POSIX多线程标准,Threads或Pthreads库提供的API可以在类Unix上运行;在C++11新标准中,可以简单通过使用thread库,来管理多线程。thread库可以看做对不同平台多线程API的一层包装;因此使用新标准提供的线程库编写的程序是跨平台的。原创 2023-07-19 00:34:37 · 2991 阅读 · 0 评论 -
十一、C++2.0其他部分
十一、C++2.0其他部分原创 2023-07-04 22:58:06 · 1527 阅读 · 0 评论 -
C++ 有用的资源
C++有用的资源以下资源包含了 C++ 有关的网站、书籍和文章。请使用它们来进一步学习 C++ 的知识。C++ 有用的网站C++ Programming Language Tutorials− C++ 编程语言教程。 C++ Programming− 这本书涵盖了 C++ 语言编程、软件交互设计、C++ 语言的现实生活应用。 C++ FAQ− C++ 常见问题 Free ...原创 2019-06-28 23:56:15 · 349 阅读 · 0 评论 -
一、语言特性之演进、环境与资源
一、语言特性之演进、环境与资源1、你应具备的基础:C++语法,语意2、我们的目标:较全面地认识C++2.0新特性,并从实例中获得验证3、C++历史:C++标准之演化 c++ 98(0.1) c++ 03(TR1,technical report 1) c++11(2.0) c++14 c++17 4、头文件C++2.0新特性包括语言和标准库两个层面,后者以头文件(header files)形式呈现。头文件的使用不带.h,C的也不带.h,旧的仍转载 2020-12-07 23:58:55 · 590 阅读 · 0 评论 -
十、Smart Pointer(智能指针)之<unique_ptr>
一、概念介绍 unique_ptr它是一种在异常发生时可帮助避免资源泄露的smart pointer,实现了独占式拥有的概念,意味着它可确保一个对象和其他相应资源在同一时间只被一个pointer拥有,一旦拥有者被销毁或变成空或开始拥有另一个对象,那么先前拥有的那个对象就会被销毁,其任何相应资源亦会被释放。 Class unique_pt继承自class auto_ptr(由于不安全已被弃用),但它提供了更简明的接口,更不易出错。1.1 出现的目的性 为了避免异常时的资源泄露,通常函数会转载 2020-12-07 23:15:55 · 873 阅读 · 1 评论 -
九、Smart Pointer(智能指针)之<weak_ptr>
一、weak_ptr出现的意义 上一节提到过shared_ptr,它会自动释放“不再需要使用的对象”的相应的资源,但是它不是万能的,在某些时候(比如说循环引用),它会显得力不从心,这就是weak_ptr出现的意义;1.1 weak_ptr 使用特性 weak_ptr也是一个模板,只提供能接受一个shared_ptr的构造函数或者另一个weak_ptr的赋值,也就是说不能直接用它定义一个智能指针对象,它是为了搭配shared_ptr使用的,weak_ptr提供lock、swap、reset、e转载 2020-12-07 23:14:54 · 433 阅读 · 1 评论 -
八、Smart Pointer(智能指针)之<shared_ptr>
C++2.0新特性(六)——<Smart Pointer(智能指针)之shared_ptr> Smart Pointer(智能指针)指的是一类指针,并不是单一某一个指针,它能知道自己被引用的个数以至于在最后一个引用消失时销毁它指向的对象,本文主要介绍C++2.0提供的新东西一、Smart Pointer分类 C++2.0提供了两大类型的智能指针,该模块都被定义于头文件<memory>: 二、标准库提供的智能指针类2.1 class shared_p...转载 2020-12-06 22:27:44 · 1629 阅读 · 2 评论 -
七、标准库之<标准库>
一、Rvalue_reference(右值引用)和move语义1、左右值概念区分 左值:表达式结束后依然存在的对象,我们也叫做变量; 右值:表达式结束后就不存在的临时对象。2、判断左值和右值 能对表达式取地址的是左值,否则就是右值 左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式)。3、move语义 右值引用出现再c++03版本之后,它可以避免一些不必要的拷贝和临时对象,当赋值操作的右边是一个右值时,左值转载 2020-12-06 22:26:31 · 1523 阅读 · 1 评论 -
六、语言特性之<decltype、lambda>
一、关键字decltype引入新关键字decltype可以让编译器找出表达式的类型,为了区别typeof,以下做一个概念区分:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型,非常依赖平台已过时,由decltype代替; 理解为:我们根据typeof()括号里面的变量,自动识别变量类型并返回该类型; typedef:定义一种类型的别名,而不只是简单的宏替换; define:简单的宏替换。比如我想知道别人传给我testVec的类型是什么(前提是我只知道他是一个容器),因为转载 2020-12-06 22:25:21 · 1439 阅读 · 0 评论 -
五、语言特性之<=default,=delete、using、noexcept、override、final、以及和const对比>
一、=default,=delete1、首先我们要回顾一下类默认函数的概念:C++中,当我们设计与编写一个类时,若不显著申明,则类会默认为我们提供如下几个函数:(1)构造函数(A())、(2)析构函数(~A())、(3)拷贝构造函数(A(A&))、(4)拷贝赋值函数(A& operator=(A&))、(5)移动构造函数(A(A&&))、(6)移动赋值函数(A& operator=(A&&))注意:拷贝函数如果涉及指针就要区分浅拷转载 2020-12-06 22:23:14 · 891 阅读 · 0 评论 -
四、语言特性之<一致性初始化、Initializer_list 、基于范围的for循环、explicit>
一、一致性初始化(uniform initialization) 之前初始化时存在多个版本,让使用者使用时比较混乱,现在提供一种万用的初始化方法,就是使用大括号。 原理解析:当编译器看到大括号包起来的东西时,会生成一个initializer_list<T>(initializer_list它其实是关联一个array<T,n>),然后再调用构造函数时,一个个从array分解取出来然后调用构造函数,但是如果这个函数自身提供了initializer_list<T>参转载 2020-12-06 22:21:07 · 836 阅读 · 1 评论 -
三、语言特性之<模板表达式中的空格、nullptr 、auto>
一、语言特性之——模板表达式中的空格二、语言特性之——nullptr标准库允许使用nullptr取代0或者NULL来对指针赋值//nullptr 是个新关键字。//它被自动转换为各种 pointer 类型,但不会被转换为任何整数类型,//其类型为std::nullptr_t,定义于 <cstddef>.void f(int);void f(void *);f(0); // 调用 f(int).f(NULL); // 如果定义NULL为0,则调用 f(int),否则调用转载 2020-12-06 22:16:35 · 419 阅读 · 0 评论 -
二、语言特性之<Variadic Templates(可变参数模板)>
二、语言特性之——Variadic Templates 表示可变的参数模板,即可以接受1个或多个模板参数 2.1 针对函数的不定模板参数 注意语法规定格式,...的位置,他一定是递归处理的,所以一定要有处理递归终止条件的函数 如果想知道不定模板参数的个数,调用sizeof...(args)2.1.1 不定模板参数的用法(万用哈希表例子)2.2 针对类的不定模板参数(Tuple元组的实现)...转载 2020-12-06 22:07:47 · 1118 阅读 · 0 评论