- 博客(15)
- 收藏
- 关注
原创 文件的保存方式,从磁盘到数据
其中的Data blocks是用来存储文件数据的,而iNode table是用来存储文件属性的,每一个文件都有独一无二的iNode,iNode·就是存储在iNode table中的,除此之外,里面还存储这每一个文件所对应存储的数据的块号,iNode bitmap 是用来判断对应的iNode是否合法·,block bitmap用来存储。例如总共为320G,就分为32G,64G等等,然后再分别管理好每个区的内存,对于每个区而言,有可以分为多个块,然后再管理好多个块,分而治之的思想。1.管理磁盘上的数据。
2024-01-18 21:35:41
378
1
原创 c++中的虚基表
看出,虽然B和C都没有存储A,但是却存储里一个地址,这个就是虚基表的地址,通过内存可以看见虚基表里面存储着两个值,第一个就是A的地址,下一行就是B距离A的偏移量,这样就可以通过虚基表找到A的存在,可以看出C也是如此。由于是虚继承,所以这里用somebody构造对象时,age是一个唯一的值,只存于对象person那部分。而如果teacher和student里面没有存着age,我们又可以通过对象来修改age,这是什么原因。虚基表的产生是由于实现虚继承,而虚继承是为了实现数据的唯一性。
2023-11-24 18:43:55
158
1
原创 C++中的虚表
从这里就可以看出父类对象和子类对象储存的虚表不相同,因此,当发生对象切片时,满足多态条件时,指针就可以通过不同虚表上的储存的函数地址调用对应函数,发生多态。此时就发生了多态,结果会打印普通人买票和学生买票这两种结果,此时person和student所产生的两个对象都含有不同的虚表。cout
2023-11-24 18:23:50
501
1
原创 C++中的operator
它是一个操作符,具有对运算符进行重载的功能,就必然说,你定义了两个int类型的变量,你可以直接进行加减,因为系统知道如何对这样的类型进行处理,而如果你定义的是两个自定义类型的变量,则我们就不能直接对两个变量相加减。此时如果我们要对两个自定义类型进行相加减,我们就应该对“+”或者“-”进行重载,因为对于日期而言,相加并没有太大的实际意义,所以我们对“-”进行重载。因为此时是日期减天数,所以圆括号的内容是Date和int,并且由于两个相减的内容是日期,所以返回值便是Date。圆括号的内容是作用对象的类型。
2023-06-06 17:35:14
3315
原创 C++中的拷贝构造函数
拷贝构造函数就是构造函数的一种,所以创建时还是类的名字,不过传递的参数接受是采用取地址名来接收,因为在C++中,传递参数时,如果是内置类型的参数,则是直接采用拷贝复制的方法,但如果是传递自定义类型的参数,则需要先调用拷贝构造函数,因为拷贝构造函数如果不自己定义,系统也会生成一个默认的函数,所以如果接收参数时是直接接收,则会发生死循环的情况,如果我们采用取别名的方式来接收参数,则会避开这个情况。拷贝构造函数就时构造函数的一种重载,它是在初始化时直接将新创建的这个类的内容初始化和传递的这个类的内容一样。
2023-06-05 19:07:33
81
原创 C++中的折构函数
折构函数的名字就是类的名字的前面加上~,并且折构函数并没有参数,没有返回值,并且一个类只有一个折构函数,如果没有在类中定义折构函数,则编译器会自动调用默认折构函数,折构函数也不能重载,在类的生命周期结束后,编译器会自动调用折构函数,完成对内存的释放。对于系统默认的折构函数而言,它只能清理类型,无法完成内存的释放,所以我们在类里面申请了空间,就必须自己写折构函数来释放空间,不然会造成内存泄漏。折构函数与构造函数相对应,构造函数是自动完成对类的初始化,而折构函数便是在程序结束时完成内存的释放。
2023-06-05 17:41:56
186
1
原创 C++中的构造函数
如果我们没有在类里面写构造函数,那编译器就会使用内里面自带的构造函数,这便是默认构造函数,但默认构造函数有很多不好的地方,它只会对自定义类型进行处理,而不会处理内置类型。内置类型就比如 int char double之类,自定义类型就比如类,我们自己创建的类型,处理自定义类型也是直接调用自定义类型里面的构造函数来处理那个自定义类型。构造函数是对类进行初始化的函数,在类创建的时候就对自动调用函数对类进行初始化,构造函数可以自己写也可以使用类中默认的构造函数。自定义初始化时,可以这样定义。
2023-06-05 17:25:59
66
1
原创 C++中auto的使用
但在实践情况下,auto一般用于定义较长的类型(类似typedef的功能),使代码更简洁。1.auto的功能:auto是自动识别等号右边式子的类型的一个关键字,用于定义变量。2:auto一次定义多个变量时,变量类型要一至,否则会报错。3: auto不能作为函数的参数变量和定义数组。4:auto和auto*是等价的。1:auto定义变量必须初始化。2.auto使用的注意事项。
2023-05-26 16:07:45
128
1
原创 C++中引用的限制以及引用和指针的区别
可以看见加了const 修饰的别名是没有错误的,而此时权限被缩小了,而被缩小的也只是别名,此时原本的C的类型并没有被改变,可以通过改变c来改变d的值。1.C++中的引用虽然好用,但它的使用也有着一定的限制。6.指针加一是越过一个对应类型的大小的字节,而引用加一是指对引用的对象的值加1.所以上面因为原来的c是被const修饰过,所以无法在采用取别名的方式放大权限。5.指针的大小永远是内存储存地址的空间大小,而引用的大小是所对于类型的大小。1.指针是创建一块空间存放所指向的地址,引用是一块空间的另一个名字。
2023-05-26 15:36:39
105
2
原创 C++的引用介绍
与直接返回变量类型不同的是,返回引用不必创造一块空间来存放临时变量。和指针没有太大的差异,改变函数内的参数的同时也改变了函数外的参数。此时并不是b是c的引用,而是将c的值赋给b(a);引用类似于给一块内存空间再取一个名字。这样我们就可以通过改变b来改变a。引用可以用于函数的传参和函数的返回。则类似将返回的值直接赋给接收的变量。类似于a和b都指向同一块空间。并且会提高函数传参的效率。所以引用无法改变对象。2.引用在函数中的运用。如果作为函数的返回值。
2023-05-24 16:12:18
48
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人