C/C++
文章平均质量分 62
C/C++
crossoverpptx
I am nobody.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
虚基类和虚继承
2.可以修饰继承方式,是虚继承。被虚继承的类,称作虚基类。1.修饰成员方法是虚函数。原创 2025-02-07 19:37:52 · 269 阅读 · 0 评论 -
如何理解多态,以及由此引出的抽象类和纯虚函数
【代码】如何理解多态。原创 2025-02-06 22:35:41 · 221 阅读 · 0 评论 -
虚函数,静态绑定和动态绑定
一个类里面定义了虚函数,那么编译阶段,编译器给这个类类型产生一个唯一的vftable虚函数表,虚函数表中主要存储的内容就是RTTI指针和虚函数的地址。当程序运行时,每一张虚函数表都会加载到内存的.rodata区。一个类里面定义了虚函数,那么这个类定义的对象,其运行时,内存中开始部分,多存储一个vfptr虚函数指针,指向相应类型的虚函数表vftable。一个类型定义的n个对象,它们的vfptr指向的都是同一张虚函数表。一个类里面虚函数的个数,不影响对象内存大小(vfptr),影响的是虚函数表的大小。原创 2025-02-04 18:14:00 · 311 阅读 · 0 评论 -
C++继承的基本意义
组合:a part of…继承:a kind of…继承的本质:a. 代码的复用 b.原创 2025-02-04 14:49:21 · 387 阅读 · 0 评论 -
容器迭代器iterator
迭代器可以透明的访问容器内部的元素的值,而无需了解其底层遍历机制具体是数组的下标还是链表的指针等等。泛型算法,有一套方式,能够统一的遍历所有的容器的元素 - 迭代器。泛型算法 - 全局的函数 - 给所有容器用的。泛型算法参数接收的都是迭代器!原创 2025-02-03 19:34:52 · 243 阅读 · 0 评论 -
C++运算符重载
C++的运算符重载:使对象的运算表现得和编译器内置类型一样。原创 2025-02-02 22:54:50 · 279 阅读 · 0 评论 -
C++模板初识
在另外一个文件中使用的模板代码调用之前,一定要看到模板定义的地方,这样的话,模板才能够进行正常的实例化,产生能够被编译器编译的代码。模板的实参推演 => 可以根据用户传入的实参的类型,来推导出模板类型参数的具体类型。所以,模板代码都是放在头文件当中的,然后在源文件当中直接进行#include包含。模板函数:在函数调用点,编译器用用户指定的类型,从原模板实例化一份函数代码出来。模板的实例化 - 函数调用点进行实例化模板函数才是要被编译器所编译的。函数模板是不进行编译的,因为类型还不知道;原创 2025-01-30 10:56:24 · 389 阅读 · 0 评论 -
C++的类Class
实际开发中,C++ 的 struct 和 class 仅默认权限不同,但习惯上用 struct 表示数据为主的结构,class 表示具有复杂行为的对象。原创 2025-01-26 16:33:53 · 698 阅读 · 0 评论 -
C++函数初识
【代码】C++函数初识。原创 2025-01-24 18:12:29 · 208 阅读 · 0 评论 -
C++的new和delete
malloc开辟内存失败,是通过返回值和nullptr做比较;而new开辟内存失败,是通过抛出bad_alloc类型的异常来判断的。malloc和free,称作C的库函数;new和delete,称作运算符。new不仅可以做内存开辟,还可以做内存初始化操作。原创 2025-01-24 17:42:23 · 253 阅读 · 0 评论 -
C++的引用
1.左值引用和右值引用2.引用的实例。原创 2025-01-24 11:15:32 · 232 阅读 · 0 评论 -
const的用法
const的编译方式不同。C中,const就是当作一个变量来编译生成指令的;C++中,所有出现const常量名字的地方,都被常量的初始化替换了!C语言中:const修饰的量,可以不用初始化(但之后同样不可作为左值)。不叫常量,叫做常变量。如果改成以下,初始值不是立即数,而是一个变量,则又变为常变量。C++中:const必须初始化,叫常量。原创 2025-01-23 16:26:01 · 957 阅读 · 0 评论 -
从编译器角度理解C++代码的编译和链接原理
了:.text<=>.text、.data<=>.data、.bss<=>.bss。步骤一:所有对符号的引用,都要找到该符号定义的地方。步骤二:符号解析成功以后,给所有的符号分配虚拟地址。编译过程中,符号是不生成虚拟地址的。常见问题:符号未定义、符号重定义。链接阶段,各个段就要进行合并。原创 2025-01-22 11:44:15 · 581 阅读 · 0 评论 -
从指令角度看函数调用堆栈过程
1.通用寄存器(EAX EBX ECX EDX EBP ESP ESI EDI)2.段寄存器(CS DS SS ES FS GS)EAX累加寄存器、EBX基址寄存器。4.标志寄存器(EFLAGS)3.指令指针寄存器(EIP)原创 2025-01-21 14:04:27 · 162 阅读 · 0 评论 -
进程虚拟地址空间区域划分
它存在,你能看得见,它是物理的;它存在,你看不见,它是透明的;它不存在,你也看不见,它被删除了!原创 2025-01-20 18:31:37 · 303 阅读 · 0 评论 -
C/C++数据库编程
C/C++数据库编程:从环境安装到代码实现原创 2023-08-23 15:22:33 · 1913 阅读 · 0 评论 -
Socket编程:基于TCP协议的客户端与服务端网络通信
socket编程一种独立于协议的网络编程接口,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。原创 2023-08-11 18:06:26 · 1170 阅读 · 0 评论 -
C++引用计数
引用计数(reference count)的核心思想是使用一个计数器来标识当前指针指向的对象被多少类的对象所使用(即记录指针指向对象被引用的次数)。它允许有多个相同值的对象共享这个值的实现。引用计数的使用常有两个目的:简化跟踪堆中(也即C++中new出来的)的对象的过程。一旦一个对象通过调用new被分配出来,记录谁拥有这个对象是很重要的,因为其所有者要负责对它进行delete。但是对象所有者可以有多个,且所有权能够被传递,这就使得内存跟踪变得困难。引用计数可以跟踪对象所有权,并能够自动销毁对象。原创 2023-06-30 15:45:08 · 1804 阅读 · 1 评论 -
CMake多级目录编译
Cmake多级目录编译原创 2023-04-21 20:51:05 · 469 阅读 · 0 评论 -
C++:explicit关键字
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数,它的作用是表明该构造函数是显示的,而非隐式的,跟它相对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式)。原创 2023-03-30 17:17:07 · 239 阅读 · 0 评论 -
C++:深拷贝和浅拷贝
对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。原创 2023-01-05 09:48:13 · 2216 阅读 · 0 评论 -
C++:拷贝构造函数
拷贝和复制是一个意思,对应的英文单词都是`copy`。对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。原创 2023-01-03 20:02:25 · 159 阅读 · 0 评论
分享