随笔分类 - c++
c++的各种知识细节等
摘要:首先给出基本框架 #include <iostream> #include <thread> using namespace std; int main(){ int n = 100; int i = 0; //创建两个线程 thread newThread1([&n, &i](){ while(i
阅读全文
摘要:C++多线程 C++11引入了线程类thread,头文件为 #include <thread> 创建多线程的方法: std::thread threadName(functionName, parameter1, paramater2, …); 传递参数可以传左值,右值,引用(使用std::ref)
阅读全文
摘要:C++提供了四个智能指针模版类,分别为:auto_ptr,unique_ptr,shared_ptr与weak_ptr(其中auto_ptr为C++98提供的解决方案,在C++11中已废除,并提供另外三种)。这三者均定义了类似指针的对象,可以将new获得(直接或间接)的地址赋给这种对象。当智能指针过
阅读全文
摘要:#一.const_cast 用于修改类型的const或volatile属性。 常量指针转化为非常量的指针,并仍会指向原来的对象。 常量引用转化为非常量的引用,并仍会指向原来的对象。 const_cast一般用于修改底指针,如const char* p形式。 例如: const int num = 5
阅读全文
摘要:#一.new与delete ##1. new与delete函数原型: void *operator new(size_t); void *operator delete(void *) ##2. new与delete的运行机制 class A{ public: A(int v) : var(v){
阅读全文
摘要:#一.const常量与#define比较 define只是简单的替换,没有类型,const可以做到防窜改与类型安全。 而且#define会在内存中可能(有几次替换就有几次拷贝)有多份拷贝,对于字面值常量加不加const都一样,例如:const char* arr = “123”;,储存在常量区,只有
阅读全文
摘要:#一.基本解释 extern关键字可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。所以一般extern关键字后面跟着的都是声明。 它有两个作用: 当extern与"C"一起连用时,如:extern "C" void fun(int a
阅读全文
摘要:一.全局静态变量 no-local static(全局变量前加static关键字) 全局静态变量储存在静态存储区,在程序运行期间一直存在。 初始化:未经初始化的全局静态变量自动初始化为0(静态全局对象值随机) 作用域:在声明它的文件之外不可见,从定义之处开始,到文件结尾。 二.局部静态变量 loca
阅读全文