随笔分类 - C/C++
摘要:https://en.cppreference.com/w/cpp/utility/move std::move 获得右值引用 Defined in header <utility> template< class T > typename std::remove_reference<T>::typ
阅读全文
摘要:https://en.cppreference.com/w/cpp/language/reference 引用声明 声明一个变量名字作为引用,也就是,是一个已经存在的对象或函数的别名 语法 & attr(optional) declarator && attr(optional) declarato
阅读全文
摘要:https://www.jianshu.com/p/94b0221f64a5 https://en.cppreference.com/w/cpp/language/value_category https://en.cppreference.com/w/cpp/language/operator_m
阅读全文
摘要:https://en.cppreference.com/w/cpp/language/value_category 值的类别 任何C++的表达式(带有变量名、操作数等的操作符)都可以特征化为两个相互独立的属性:类型和值类别。每一个表达式都有非引用类型,每一个表达式都严格属于三个几本值类别中的一个:p
阅读全文
摘要:空类占用一个空间。如果有任何成员需要占用空间,空类占用的一个空间不再有效。这一个空间相当于占位符,C++不允许不占用空间的类型。如果空类作为一个成员,则占用一个空间,相当于一个变量类型。如果继承空类,并且本身类有占用空间的成员,则空类的一个空间不再有效。 static的变量不占用空间,因为存储在静态
阅读全文
摘要:在C++中程序先是创建全局变量,这个是在main函数执行之前,全局变量的作用域是程序的整个生命周期。 然后运行main函数,挨个创建按照程序执行顺序遇到的变量。如果是static修饰的,那么也会在全局变量的静态空间创建,与全局变量没区别,唯一就是限定了作用域。 释放的顺序当然是调用delete的,直
阅读全文
摘要:数组作为函数参数传递的时候,会退化为指针,并不能得到数组的大小 一 void test1(int a[]) { cout << sizeof(a) << endl; } int main() { int a[4]; test1(a); } 输出结果是指针的大小,并不是数组的大小 二 void tes
阅读全文
摘要:https://zh.cppreference.com/w/cpp/language/zero_initialization https://en.cppreference.com/w/cpp/language/zero_initialization 零初始化 把一个对象的初始化值设置为0 说明 零
阅读全文
摘要:https://en.cppreference.com/w/cpp/language/new https://zh.cppreference.com/w/cpp/language/new new表达式 创建并且初始化动态存储的对象,对象的声明周期并不受创建作用域的限制。这里很明确的说明了new是创建
阅读全文
摘要:因为做leetcode的一道算法题https://leetcode-cn.com/problems/regular-expression-matching/,需要用到二维数组,这里就详细介绍一下数组 一维数组 char * a = (char*)malloc(8 * sizeof(char)); m
阅读全文
摘要:1.缘由 最近在使用nlohmann的json,发现有些地方不是特别好用,所以就想自己修改一下(目的是为了增加类似jsoncpp中可以//增加注释的功能),在看源码的时候看到了一个迷惑的地方,就是解析json 第一个参数我传入的是一个istream,但是这里接收的是一个类。 调试的时候发现,先创建了
阅读全文
摘要:前言 一开始使用jsoncpp,但是jsoncpp已经不更新了,nlohmann还在更新,并且jsoncpp做过一次大的版本升级,导致api不兼容,以前使用过的工程代码不能很好的升级到新的版本,并且jsoncpp是多个文件支持,使用的时候我编译成了lib,nlohmann是一个头文件,更方便。 nl
阅读全文
摘要:1. decltype 返回一个数据的类型 decltype(1)就相当于int decltype(1) a;->int a;//这是等价的 decltype(23.11) b;->double b;//这是等价的 std::declval与decltype一起使用,作用就是调用一个结构体或是类的方
阅读全文
摘要:1 libcurl引入的时候必须要加载下面三个库 #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wldap32.lib") #pragma comment(lib, "crypt32.lib" ) 32位程序需要引入前两个,64位程
阅读全文