posted @ 2021-08-07 22:19 闪之剑圣 阅读(2177) 评论(0) 推荐(0) 编辑
posted @ 2021-07-16 15:05 闪之剑圣 阅读(290) 评论(0) 推荐(0) 编辑
|
||
摘要:
最近在做一个项目时需要读取二进制文件,我用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 闪之剑圣 阅读(290) 评论(0) 推荐(0) 编辑
摘要:
C++11除了带来了右值引用以外,还引入了一种称为“万能引用”的语法;通过“万能引用”,对某型别的引用T&&,既可以表达右值引用,也可以表达左值引用。 定义 该语法有两种使用场景,最常见的一种是作为函数模板的形参: template<typename T> void f(T&& param); 其中 阅读全文
posted @ 2021-07-10 21:07 闪之剑圣 阅读(1186) 评论(0) 推荐(1) 编辑
摘要:
所谓型别推导,指的是我们在为变量赋予类型时不必再显式声明,编译器可以根据代码来自动推导类型。C11中有两种型别推导的场景:模板和auto。下面我们来一一解析。 ##模板的型别推导 模板在C中的应用可以参考我的这篇文章:https://www.cnblogs.com/wickedpriest/p/61 阅读全文
posted @ 2021-06-20 13:02 闪之剑圣 阅读(162) 评论(0) 推荐(0) 编辑
摘要:
在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 闪之剑圣 阅读(72) 评论(0) 推荐(0) 编辑
摘要:
C++98中,我们如果想用简写的方式表达一个类型,那么可以使用typedef关键字: typedef std::unique_ptr<std::unordered_map<std::string, std::string>> UPtrMapSS; C++11中,提供了别名声明的语法来取代typede 阅读全文
posted @ 2021-04-24 14:56 闪之剑圣 阅读(121) 评论(0) 推荐(0) 编辑
摘要:
C11中推出了一种特殊的关键字:mutable用于修饰类变量。它的作用是标注该变量一定会被修改,因此也就不是const类型。 那么标注这个关键字有什么用呢?C规定被mutable修饰的变量可以在const函数中被修改,因为const函数一般只能允许调用const类型的变量和函数,这样做相当于在函数中 阅读全文
posted @ 2021-04-15 20:42 闪之剑圣 阅读(315) 评论(0) 推荐(0) 编辑
摘要:
最近在参与组里的项目时接触了很多以前自己没太了解的C语法(尤其是C11以后出现的),今天给大家讲一下C++11新出的override和default关键字。 override关键字主要在声明类的成员函数时使用,它的作用就是告知程序员和编译器这个函数是重写了父类的虚函数,一方面代码的阅读者看到这个关键 阅读全文
posted @ 2021-04-09 20:20 闪之剑圣 阅读(1263) 评论(0) 推荐(0) 编辑
摘要:
在以前的文章中,我们讲过C++的shared_ptr,利用它可以实现基于引用计数的指针回收,从而防止出现内存泄露。 但是事实上,即使是采用了shared_ptr,在存在循环引用的情况下其实仍然有可能会导致内存泄露,举个例子: struct B; struct A { std::shared_ptr< 阅读全文
posted @ 2021-03-16 21:25 闪之剑圣 阅读(164) 评论(0) 推荐(0) 编辑 |
||