
C/C++
文章平均质量分 79
一夜了
研究对话,LLM,多模态算法。
展开
-
this指针介绍
最近在看相关的书籍时,看到了一些关于this指针的介绍,觉得很有用,所以我在下面摘录一些相关的内容。以供大家参考学习。this指针本质是一个函数参数this指针从本质上来说是一个函数参数,这个函数参数是编译器自动为我们添加的。另外,this指针指向的是对象本身,所以在全局函数以及静态函数中都不能使用this指针。 例如:class A{ public: int test(int原创 2017-06-29 16:12:51 · 22942 阅读 · 0 评论 -
虚函数与纯虚函数
虚函数首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介 假设我们有下面的类层次:class A { public: virtual vo原创 2017-10-22 16:08:50 · 24401 阅读 · 6 评论 -
memcpy函数用法
1、memcpy 函数用于 把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域);拷贝多少个?有一个size变量控制 拷贝的字节数; 函数原型:void *memcpy(void *dest, void *src, unsigned int count); 用法:(1)可以拷贝任何类型的对象,因为函数的参数类型是void*(未定义类型指针),也就是说传进去的实参可以原创 2017-10-22 16:05:42 · 14142 阅读 · 0 评论 -
C++中的四种类型转化
Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型: 代码:int i;double d;i = (i原创 2017-10-22 16:02:55 · 17087 阅读 · 1 评论 -
#define用法
1.简单的宏定义# define 标识符 替换列表(替换列表可以是数,字符串字面量,标点符号,运算符,标识符,关键字,字符常量。注意:替换列表是可以为空的) 典型错误: #define N = 100 int a[N]; /这样会成为int a[= 100],这里会处理成为一种标识记号一样/#define N 100; int a[N]; /带分号的定义会成为int a[100;],这是原创 2017-10-22 15:51:42 · 7931 阅读 · 0 评论 -
inline函数
inline函数 因为使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。 头文件中不仅要包含 inline 函数的声明,而且必须包含定义,且在定义时必须加上 inline 。【关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用】原创 2017-09-24 22:27:44 · 24383 阅读 · 0 评论 -
内存溢出与泄漏
1.介绍内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致原创 2017-09-02 22:53:25 · 22126 阅读 · 0 评论 -
C++实现只能动态或者静态创建对象
C++如何实现类对象只能动态分配或只能静态分配C++中建立类的对象有两种方式: (1)静态建立,例如 A a; 静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,是直接调用类的构造函数。 (2)动态建立,例如 A* p = new A(); 动态建立一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator原创 2017-09-02 22:36:18 · 13082 阅读 · 0 评论 -
typedef的用法总结
第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然:char *pa原创 2017-09-19 00:30:05 · 17035 阅读 · 0 评论 -
关于位域的理解
位域 :有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二原创 2017-09-19 00:13:57 · 17074 阅读 · 0 评论 -
C++中使用内存映射文件存取struct,并用指针访问
#include <iostream>#include <Windows.h>#define OK 0#define MMF_FILE_SIZE (1024*512)const char* mmf_file_name = "d:\\mmf.txt";const char* mmf_share_name = "testmmf";//定义内存映射文件相关的全局变量HANDLE file_hand转载 2017-07-03 15:52:22 · 4577 阅读 · 0 评论 -
内存映射文件原理探索
原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间 中一块大小相同的区域之间的一一对应,如图1中过程1所示。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存在的。在内存映射的过程中,并没有实际的数据拷贝,文件没有被载入内存,只是逻辑上被放入了内存,具体到代码,就是建立转载 2017-07-03 15:46:57 · 4364 阅读 · 0 评论 -
C++内存处理
介绍C++中经常操作的内存可以分为五个部分。 (1)栈区(stack):由编译器自动分配和释放,存放函数的地址,函数参数,局部变量等。 (2)堆区(heap):一般由程序猿分配和释放,如果对分配的内存不释放,容易造成内存泄漏。 (3)全局区(静态区):全局变量和静态变量的存储放在一起。初始化的全局变量和静态变量放在一起,未初始化的全局变量和静态变量放在相邻的另一个块区域,程序结束后由系统释放。原创 2017-07-02 21:21:52 · 22288 阅读 · 0 评论 -
C++关键字总结
关于C++关键字的总结,一边总结一边学习: 参考了export关键字的用法 和 export关键字 和 浅析C语言的一个关键字——register和C++ operator两种用法和C++11特性:auto关键字(1)explicit关键字 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是原创 2017-06-30 20:35:03 · 23900 阅读 · 0 评论 -
从C++类创建后,自动创建的函数有哪些开始谈起
最近遇到一个C++问题,C++类创建后,会自动创建哪些函数??这个问题如果如果不够仔细或者平时不太注意的话,就会答得不够完全,所以以下我将一一介绍,并进行一些展开。首先,这个问题的答案是:默认构造函数,析构函数,拷贝构造函数以及默认赋值函数。下面我将对拷贝构造函数以及默认赋值函数进行简单的介绍。第一,拷贝构造函数。(1)顾名思义,简单的来说拷贝构造函数就是对类的原创 2017-05-16 17:08:13 · 24322 阅读 · 1 评论 -
C++模板详解
简介模板是允许以通用类型的方式来编写程序,其中的通用类型可以是int,double等具体类型。原创 2017-06-30 14:23:20 · 22989 阅读 · 0 评论 -
C++系列之浅谈
本篇blog是关于所有C++文章的所有链接总结: 1.从C++类创建后,自动创建的函数有哪些开始谈起 2.this指针介绍 3.C++模板详解 4.C++关键字总结 5. C++内存处理 6. 内存映射文件原理探索 7.C++中使用内存映射文件存取struct,并用指针访问 8.C++实现只能动态或者静态创建对象 9.静态链接库和动态链接库 1原创 2017-06-29 18:21:51 · 10649 阅读 · 1 评论