摘要:
atomic 参考:c++11 多线程(3)atomic 总结 - 简书.c++11 atomic Npgw的博客.C++11 并发指南系列 - Haippy - 博客园. atomic_flag atomic_flag看名字就能知道是一种flag类型,它是一种简单的原子布尔类型,只支持两种操作:t 阅读全文
摘要:
lock类 简单说明三个参数 lock_guard和unique_lock的第二个参数,是一个常数,一个标记tag。 | Type | Effect(s) | | | | | defer_lock_t | do not acquire ownership of the mutex | | try_t 阅读全文
摘要:
mutex类 mutex类是C++中最基本的互斥量。它提供了基本的上锁与解锁函数,lock(),unlock()以及try_lock()。 lock()与unlock(): 下面模拟之前说过的打印机的情况,就是多线程访问打印机,其中A线程在装入信息后被阻塞,打印机中的数据就会被线程B覆盖,当A恢复执 阅读全文
摘要:
this_thread类 this_thread是一个类,有4个功能函数: get_id() 获取当前线程id #include<iostream> #include<thread> using namespace std; void fun(){ cout<<"hello"<<endl; } in 阅读全文
摘要:
多线程 参考:CSDN,知乎 传统C++(C++11之前)中并没有引入线程的概念,如果想要在C++中实现多线程,需要借助操作系统平台提供的API,如Linux的<pthread.h>,或windows下的<windows.h> 从C++11开始提供了语言层面的多线程,包含在头文件<thread>中, 阅读全文
摘要:
信号处理 信号是由操作系统传给进程的中断,能够提前终止一个程序。在Unix,Linux,Mac OS 或Windows系统上,都可以通过Ctrl+C产生中断。 下面是可以在程序中被捕获的信号,并且可以基于信号采取适当的动作,这些信号定义在C++头文件<csignal>中。 | 信号 | 描述 | | 阅读全文
摘要:
C++模板 模板是泛型的基础,泛型编程就是一种独立于任何特殊类型的方式编写代码。模板就是创建泛型类或泛型函数的蓝图。STL库中的几个数据结构(vector,list,map等)以及算法都使用了泛型。 函数模板 格式:template <typename type> return-type funct 阅读全文
摘要:
C++动态内存 同C,C++中也是有堆和栈的概念。栈是函数内部声明的所有变量都所占用空间,堆是程序中未使用的内存,在程序运行期间可用于动态分配。 同样也有alloc()分配内存,新增了new和delete运算符来分配释放内存 new和delete new关键字用来分配一种类型的内存:new type 阅读全文
摘要:
异常处理 参考:cnblogs 异常和错误(bug) 异常:是程序开发过程中必须考虑的一些特殊情况,是程序运行时可以预料的执行分支。异常是不可以避免的,如0除问题,数组越界问题,文件不存在问题等。但是可以处理,通过抛出,捕获异常,可以使程序继续运行。 错误:是程序的缺陷,是程序运行时无法预料的运行方 阅读全文
摘要:
C++文件和流 C++文件的读写流用的是fstream库,它定义了三个新的数据类型: | 数据类型 | 描述 | | | | | ofstream | 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 | | ifstream | 该数据类型表示输入文件流,用于从文件读取信息。 | | fs 阅读全文
摘要:
C++多态 继承和派生 当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态 如:shape类被派生为两个类:Rectangle和Triangle #include<iostream> using namespace std; class Shape{ protected: int wid 阅读全文
摘要:
运算符重载和函数重载 重载是c++多态性的一大体现,重载运算符是给运算符添加新的定义,使之前不能运算的对象变得可运算,且一般和运算符的意义相似. 函数重载主要是同名函数参数类型不同,参数个数不同,实现不同的功能 运算符重载 运算符重载一般作用于类的对象运算,因为它需要相同返回类型和参数,运算符重载依 阅读全文
摘要:
类的访问控制和继承 类的静态成员 类的静态成员用关键字static修饰,类似静态变量或静态函数,也是有共享的概念 类的静态变量: 静态变量在类的所有对象中共享,不能再类的定义中初始化,但可以在类外部通过作用域符::来初始化,或通过对象初始化 class box{ public: static int 阅读全文
摘要:
友元函数、内联函数和this指针 友元函数 友元函数是定义在类的外部,但有权访问类的所有私有(private)和保护(protectd)成员.友元函数的原型在类的定义中出现,但它并不是类的成员函数 友元不止可以是函数,还可以是类,称为友元类 声明友元函数/类,用friend关键字 如: #inclu 阅读全文
摘要:
移动构造函数[C11新增] 参考:知乎:C++11右值引用和移动构造函数详解.知乎:什么是POD数据类型. C++ 11之前,对象的拷贝由三个函数决定:拷贝构造函数,拷贝赋值运算符和析构函数。 C++ 11新增两个函数:移动构造函数和移动赋值运算符。 首先介绍移动语义(move),指以移动的方式而非 阅读全文
摘要:
构造函数和复制构造函数 构造函数 对于需要传值的构造函数,如 class box{ protected: int X; int Y; int Z; public: box(int,int,int); }; box::box(int x,int y,int z){ X=x; Y=y; Z=z; } 可 阅读全文
摘要:
基本输入输出 输出:cout<< 输入:cin>> 错误:cerr<< 日志:clog<< 在功能和调用上,cout,cerr和clog看上去无差别,cerr对象是非缓冲的 ,每个流插入到cerr后会立即输出,而clog对象是缓冲的,每个流插入到clog会先存储在缓冲区,直到缓冲填满或缓冲刷新才输出 阅读全文
摘要:
Lambda函数 参考:CSDN C++11开始,提供了对匿名函数的支持,成为Lambda函数(表达式) 通常,lambda函数用于封装传递给算法或异步方法的几行代码,对应不需要复用,且短小的函数,使用lambda函数可以增加代码的可读性 格式: auto function=[capture lis 阅读全文
摘要:
引用类型 c++增加引用类型的概念,定义方法int &b=a;表示引用类型,引用类型相当于变量的别名,地位和被引用的变量相同,int &b=a;,执行后,变量a和b有相同的值和地址,相当于一个地址的内容有两个标签 必须在定义时用,如果在定义后,int b;&b=a就不是引用了,而是取地址 类似于指针 阅读全文