自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 如何自己写vector-利用可变参模板+引用折叠,同时实现空间配置器

0708——学习笔记。

2024-07-08 23:32:36 66

原创 Cpp模板-template、typename(二)

T —— 类型参数,也叫模板参数 中包括两种类型参数:用typename/class修饰的是类型模板参数,是类型说明符。另外的称为非类型模板参数。与函数模板一样,非类型参数不允许使用浮点型、类对象(对象的引用可以)、void。

2024-06-02 18:34:41 392

原创 Cpp模板-template、typename(一)

2、template 为了与定义类的class区分,用typename来定义类型参数。T可以随便用其他占位符。模板参数名的作用域仅限于函数模板范围内,且每个模板参数要在函数的形参列表中至少出现一次。——《C++面向对象程序设计(杜茂康)》C7。1、模板是类型安全的。

2024-05-30 23:54:23 186

原创 5-29 宏的要点

4、尽可能使用const变量,而不是宏常量。2、简单宏性能优于常规函数调用。3、宏不支持任何形式的类型安全。1、宏函数可以减少代码行。

2024-05-29 23:48:34 110

原创 多态 polymorphism

1、没有继承关系的类,分配完内存后,优先给虚表指针赋值,再列表初始化,再构造函数。有继承关系的类,分配完内存后,先基类构造,后续同上。2、将函数声明(只能是类中的)为虚函数。告诉编译器,调用复函的版本。将子类对象视为父类,并执行子类的函数实现。

2024-05-26 23:46:42 87

原创 5-26 Cpp学习笔记

继承层次结构外,也不能通过子类实例访问基类的成员。在继承层次结构中,子类的子类能访问Base类的public、protected。:base类的public、protected,只能被Derived类使用,而无法通过Derived实例来使用。6、避免切除问题(类的截断),不要按值传递参数,以指向基类的指针或者const引用的方式。1、如果子类实现了基类的函数,返回值、参数都相同,就覆盖了基类的函数。8、final —— 不能用做基类,禁止被继承。无论什么继承,子类都不能访问父类的私有成员。

2024-05-26 21:49:11 423

原创 5-22 一些知识点

— 《21天学通C++》

2024-05-22 22:56:13 241

原创 constexpr

让编译器计算并插入函数的结果,而不是插入计算结果的指令。—— 《21天学通c++》强推。constexpr 声明操作。

2024-05-22 00:00:03 176

原创 friend:函数、类

main函数中可以直接通过调用DisplayAge函数去访问Human的私有成员。DisplayAge是一个全局函数。声明类是自己的朋友,朋友就可以访问私有成员。—— 《21天学通C++》

2024-05-20 23:54:04 259

原创 类的大小——实例化对象的大小

虚函数带来虚函数表指针(无论有多少个虚函数,类的大小都只增加一个虚函数表指针)空类大小为1,且能实例化。—— 不影响类的大小。虚基类带来虚基表指针。

2024-05-19 18:04:34 100

原创 this 是指针

调用静态方法时,没有this指针。静态函数不与任何具体的对象有关。在类成员函数中调用其他函数,编译器隐式地传递this指针。

2024-05-19 17:52:14 61

原创 通过构造、析构来控制类的属性

声明:私有的复制构造函数、私有的拷贝构造函数(不需要具体实现,就可以实现目的)

2024-05-19 14:07:39 246

原创 cpp笔记-24-05-10

3、explicit —— 只可用于声明単参构造函数。声明类的构造函数是显示调用,不是隐式。默认构造函数时调用时不提供参数的构造函数(发生在调用时),而并不一定是不接受任何参数的构造函数。可以使用关键字constexpr将构造函数定义为常量表达式。4、默认构造函数 —— 不提供参数调用的构造函数。构造函数一般不定义成虚函数。6、为了防止内存泄露,一般将析构函数定义为虚函数。2、private —— 只能内部(友元也可以)析构函数不能重载,,每个类只有一个析构函数。1、public —— 外部也能访问。

2024-05-10 23:30:15 244

原创 cpp笔记-24-05-08

2、封装:将数据以及使用他们的函数进行逻辑编组。《21天学通C++》c9.1。1、声明类是,结尾有“;

2024-05-08 23:32:44 99

原创 宇宙飞船运算符

=>

2024-05-08 09:41:11 92

原创 类内static、const函数

1、声明加static,定义可以不加2、不属于具体的对象,没有this指针3、某个特定对象调用static函数时,只能访问static成员变量(protected、private都可以)4、如果同一类型的其他对象对于static方法可见,如当传递了对象的指针/引用作为static函数参数时,那么也可以访问其他对象的private、protected的非static数据成员。(static 函数没有this,但是参数有该入参的this)5、调用方法同普通函数一致。

2024-05-06 23:28:28 100

原创 虚函数表指针和虚函数表

Rt。

2024-05-01 11:56:20 9

原创 C++五法则

默认复制赋值运算符默认复制构造函数移动构造移动赋值析构。

2024-04-30 14:47:25 174

原创 初始化列表能提高效率的原因是什么?

??

2024-04-27 09:38:01 100

原创 [阅读]C++新经典

C13 ✅。

2024-04-25 10:32:59 118 1

原创 迭代器与容器

2024-04-25 10:03:27 306

原创 内联函数放在头文件中为什么不会报重定义错误?

??

2024-04-24 11:13:47 75

原创 程序运行之后,编译器怎样发挥作用?

??

2024-04-24 10:14:48 283

原创 Cpp初始化用()和{}的差别是什么?

??

2024-04-24 09:50:33 303

原创 为什么free不需要传入长度,malloc需要

??

2024-04-24 09:48:11 288

原创 cache好文整理

计算机缓存Cache以及Cache Line详解_cache line buffer-CSDN博客

2024-04-17 23:06:21 104

原创 函数声明、原型、定义

给出函数体 “{ }”....;// 需要包含函数体。

2024-03-17 19:43:28 412 1

原创 【三两波折】指向函数的指针

函数占用内存,在虚拟内存中属于txt段(只读),函数也是有地址的。(返回值类型)(*函数指针名)(参数列表)

2024-03-10 22:39:55 412

原创 【三两波折】char *foo[]和char(*foo)[]有何不同?

指的是一个大小为3的数组,数组存的是char *,通过foo[i]或*(foo + i)可以读取到对应为止的值。取址运算符已经和foo优先结合了,foo一定是一个指针。这个指针指向一个地址,这个地址是1*3大小的数组 [char][char][char]。定义了一个数组,大小是x,数组里存的是type类型。数组下标优先级最高,结合方式“左到右”,因此等价于“char *定义了一个数组foo,大小是3,数组里存的是。答:定义了一个数组,大小是3,数组里存的是int 类型。&ch:指向整个数组的指针。

2024-03-10 22:15:05 406

原创 【呜】如果要教你定义一个结构体

C语言中结构体是怎么定义的

2024-03-05 23:30:55 1777

原创 2月读书计划

C21—— makefile及cmake部分后续学习。已读:C13-C20。

2024-02-16 20:22:30 360

原创 C语言中的整数安全:溢出、回绕

无符号数永远不会溢出,只是在无限的循环往复。对于加法、乘法,假装有额外的有效位来承载运算结果,最后再直接截断。加法例子减法例子。

2024-01-25 23:29:14 704

原创 可执行文件为什么又叫映像文件image?——程序员的自我修养——链接、装载与库》笔记

直到启动运行,可执行文件中的指令、数据都没有被装入内存中。OS仅通过可执行文件头部的信息建立起“可执行文件”和进程虚存之间的映射关系。举例子:身份证就是一种映射关系,我的身份证是“鹅城”给我发的,我并不需要真的在“鹅城”,但通过这个身份证的映射又真的能找到我。“可执行文件”与“执行该可执行文件进程的虚拟空间”存在着一种映射关系,这种映射关系只是保存在OS内部的一个数据结构。“可执行文件在装载时实际上是被映射的虚拟空间” —— 《程序员的自我修养——链接、装载与库》

2024-01-22 23:42:32 412

原创 未初始化的全局变量为什么可以认为放在.bss 段?

未初始化的全局变量是弱符号。编译成.o时,占的大小是未知的,有可能别的地方还定义了,且定义的size更大。但是链接器是要符号判决的,是能知道大小的,最终在bss段为其分配空间(可执行文件)。目标文件中,没有在.bss段分配空间,而是标记为COMMOM。

2024-01-21 23:30:46 417

原创 程序员的自我修养-笔记

4、链接之前,.o的VMA都是0,因为虚拟空间还没有分配。链接之后,可执行文件各个段就分到相应的虚拟地址。链接器在完成地址、空间分配之后,就可以确定所有符号的虚拟地址了,然后就可以对需要重定位的进行地址修正了。代码引用了外部代码、符号,对应.o“.rel.text”代码段的重定位表,“.rel.data”数据段的重定位表。2、链接器为目标文件分配地址和空间,.test、.data在可执行文件及装载后的虚拟地址中均占空间;1、.bss 在目标文件、可执行文件中并不占用空间,但在装载时占用地址空间。

2024-01-21 23:19:53 443

原创 优化程序性能

1、选择一组适当的算法和数据结构;编写编译器能有效优化以转换成高效可执行代码的源代码。2、编写的一小点变化,都会引起编译器优化方式的很大变化。3、消除不必要的函数调用、条件测试、内存引用。

2024-01-17 23:22:31 285

原创 《嵌入式C语言自我修养》第四章笔记

编译过程,将程序翻译成CPU能够识别和运行的二进制机器指令的过程。 从源程序到二进制文件的过程,很有意思 一个可执行文件中的每一个section都有一个section header,将这些section headers集中放到一起,就是section header table,翻译成中文就是节头表。section header描述各个section的名称、类型、起始地址、大小等信息。程序运行时,加载器会根据ELF header来获取可执行文件信息。 未初始化的全局变量和静态变量会放置在BSS段中,但是

2024-01-11 20:47:03 333

原创 谈谈寄存器

寄存器在CPU内部,用来暂存指令、数据,利用寄存器会非常的快,通常在一个CPU时钟周期就可以完成。控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。CPU的内部一般由:寄存器、控制器、运算器和时钟组成。“机器语言级别的程序是通过寄存器来处理的” —— 《程序是怎么跑起来的》矢泽久雄。通过汇编/反汇编,可以发现寄存器大量参与我们的程序运行。从内存读入寄存器的数据。时钟负责发出CPU开始计时的时钟信号。—— 《程序是怎么跑起来的》矢泽久雄。寄存器可以看做内存的一种。

2024-01-04 23:38:48 421 1

原创 什么是程序/代码

程序由指令和代码组成。程序能指挥计算机每一步怎么去运行。CPU只能识别和执行机器语言。

2024-01-04 23:20:04 343 1

原创 关于指针、内存的一些释疑与疑问

我觉得是编译器直接优化掉了中间过程,直接往栈上内存写值。

2023-12-25 23:02:04 393 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除