八叶一刀·无仞剑

万物流转,无中生有,有归于无

导航

2021年8月7日

摘要: C++ STL的vector相信大家一定都知道,它是一个一般用来当做可变长度列表的类。在C++11之前,一般给vector插入新元素用得都是push_back函数,比如下面这样: std::vector<std::string> list; list.push_back(std::string("6 阅读全文

posted @ 2021-08-07 22:19 闪之剑圣 阅读(4279) 评论(0) 推荐(0) 编辑

2021年7月16日

摘要: 最近在做一个项目时需要读取二进制文件,我用C语言的fread进行读取,代码如下: FILE *fp; int read_data; fopen_s(&fp, file_path, "r"); if (fp) { fseek(fp, 0L, SEEK_END); size = ftell(fp); f 阅读全文

posted @ 2021-07-16 15:05 闪之剑圣 阅读(679) 评论(0) 推荐(0) 编辑

2021年7月10日

摘要: C++11除了带来了右值引用以外,还引入了一种称为“万能引用”的语法;通过“万能引用”,对某型别的引用T&&,既可以表达右值引用,也可以表达左值引用。 定义 该语法有两种使用场景,最常见的一种是作为函数模板的形参: template<typename T> void f(T&& param); 其中 阅读全文

posted @ 2021-07-10 21:07 闪之剑圣 阅读(3244) 评论(0) 推荐(2) 编辑

2021年6月20日

摘要: 所谓型别推导,指的是我们在为变量赋予类型时不必再显式声明,编译器可以根据代码来自动推导类型。C11中有两种型别推导的场景:模板和auto。下面我们来一一解析。 ##模板的型别推导 模板在C中的应用可以参考我的这篇文章:https://www.cnblogs.com/wickedpriest/p/61 阅读全文

posted @ 2021-06-20 13:02 闪之剑圣 阅读(369) 评论(0) 推荐(0) 编辑

2021年4月28日

摘要: 在C++中,有一些构造函数可以进行隐式类型转换,比如下面的例子: class Widget { public: Widget(); //构造函数1,不能进行隐式转换 Widget(int a); //构造函数2,可以进行int的隐式转换 Widget(float a, int b=0,int c=0 阅读全文

posted @ 2021-04-28 11:33 闪之剑圣 阅读(101) 评论(0) 推荐(0) 编辑

2021年4月24日

摘要: C++98中,我们如果想用简写的方式表达一个类型,那么可以使用typedef关键字: typedef std::unique_ptr<std::unordered_map<std::string, std::string>> UPtrMapSS; C++11中,提供了别名声明的语法来取代typede 阅读全文

posted @ 2021-04-24 14:56 闪之剑圣 阅读(241) 评论(0) 推荐(0) 编辑

2021年4月15日

摘要: C11中推出了一种特殊的关键字:mutable用于修饰类变量。它的作用是标注该变量一定会被修改,因此也就不是const类型。 那么标注这个关键字有什么用呢?C规定被mutable修饰的变量可以在const函数中被修改,因为const函数一般只能允许调用const类型的变量和函数,这样做相当于在函数中 阅读全文

posted @ 2021-04-15 20:42 闪之剑圣 阅读(515) 评论(0) 推荐(0) 编辑

2021年4月9日

摘要: 最近在参与组里的项目时接触了很多以前自己没太了解的C语法(尤其是C11以后出现的),今天给大家讲一下C++11新出的override和default关键字。 override关键字主要在声明类的成员函数时使用,它的作用就是告知程序员和编译器这个函数是重写了父类的虚函数,一方面代码的阅读者看到这个关键 阅读全文

posted @ 2021-04-09 20:20 闪之剑圣 阅读(2534) 评论(0) 推荐(0) 编辑

2021年3月16日

摘要: 在以前的文章中,我们讲过C++的shared_ptr,利用它可以实现基于引用计数的指针回收,从而防止出现内存泄露。 但是事实上,即使是采用了shared_ptr,在存在循环引用的情况下其实仍然有可能会导致内存泄露,举个例子: struct B; struct A { std::shared_ptr< 阅读全文

posted @ 2021-03-16 21:25 闪之剑圣 阅读(242) 评论(0) 推荐(0) 编辑

2021年3月14日

摘要: 在老版本的C++中,我们可以比较方便得对结构体、数组等对象利用进行初始化,而类变量的初始化则取决于构造函数的形式,例如: struct A { int a, b, c; }; class Foo { public: Foo(int n) {} }; int main() { int number[5 阅读全文

posted @ 2021-03-14 16:16 闪之剑圣 阅读(140) 评论(0) 推荐(0) 编辑