c++
文章平均质量分 86
Bug_Killer_Master
以Bug为伴,以Bug为生
展开
-
赋值运算符重载函数(operator=)介绍
上面描述的对运算符“==”进行重载,之所以叫“重载”,是由于编译器在实现运算符“==”功能的时候,已经针对这个运算符提供了对于一些基本数据类型的操作支持,只不过现在该运算符所操作的内容变成了我们自定义的数据类型(如 class),而在默认情况下,该运算符是不能对我们自定义的数据类型进行操作的。那么,在设计 person 类的时候,就可以通过针对运算符“==”进行重载,来使运算符“==”具有比较对象 p1 和 p2 的能力(实际上比较的内容是 person 类中的数据成员“age”)。转载 2023-09-22 16:37:17 · 868 阅读 · 0 评论 -
类的大小(sizeof)
静态数据成员被编译器放在程序的一个global data members中,它是类的一个数据成员,但不影响类的大小。* 把A的成员拆开看,char为1,int为4,所以是1+(3)+4+1+(3)=12,()为字节补齐。* @brief 8 8 16 派生类虚继承多个虚函数,会继承所有虚函数的vptr。* @brief 对于包含虚函数的类,不管有多少个虚函数,只有一个虚指针,vptr的大小。* @brief 对于虚单函数继承,派生类也继承了基类的vptr,所以是8字节。* @author 光城。转载 2023-09-22 14:56:55 · 151 阅读 · 0 评论 -
static那些事
在上面的程序中,对象在if块内声明为非静态。因此,当创建对象时,将调用构造函数,并且在if块的控制权越过析构函数的同时调用,因为对象的范围仅在声明它的if块内。就像类中的静态数据成员或静态变量一样,静态成员函数也不依赖于类的对象。由于声明为static的变量只被初始化一次,因为它们在单独的静态存储中分配了空间,因此类中的静态变量。允许静态成员函数仅访问静态数据成员或其他静态成员函数,它们无法访问类的非静态数据成员或成员函数。就像变量一样,对象也在声明为static时具有范围,直到程序的生命周期。转载 2023-09-21 16:59:31 · 58 阅读 · 0 评论 -
C++ 一种数组快速排序方法详解
以下就是我对分治:快速排序的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对分治算法的理解,请持续关注我哦!(2)向左走,从数组的右边位置向左找,一直找到小于等于 pivot 的数,找到R[j]=12,R[i]与R[j]交换,i++。(4)向左走,从数组的右边位置向左找,一直找到小于等于 pivot 的数,找到R[j]=18,R[i]与R[j]交换,i++。(6)然后在分别对这两个序列(12,24,5,18)和(36,58,42,39)进行快速排序(递归)。转载 2023-09-07 15:50:13 · 572 阅读 · 0 评论 -
隐式转换和显示转换
将dynamic_cast用于引用时,其用法稍有不同:没有与空指针对应的引用值,也就是说没有空引用,引用必须要初始化,因此无法使用特殊的引用值来指示失败,当请求不正确时,dynamic_cast将引发bad_cast异常。可以由reinterpret_cast执行但不能由static_cast执行的转换是基于重新解释类型的二进制表示的低级操作,在大多数情况下,这将导致特定于系统的代码,因此不可移植。C++是一门强类型的语言,许多转换,特别是那些暗示值的不同解释的转换,需要显式转换,在c++中称为类型转换。转载 2023-09-05 17:23:24 · 340 阅读 · 0 评论 -
C++ inline 关键字
普通函数可以有指向它的函数指针,那么,内联函数也可以有指向它的函数指针,因此,内存中需要一份内联函数的定义,使得这样的函数指针可以存在。2>内联函数是真正的函数,和普通函数调用的方法一样,在调用点处直接展开,避免了函数的参数压栈操作,减少了调用的开销。内联函数不是在调用时发生控制转移关系,而是在编译阶段将函数体嵌入到每一个调用该函数的语句块中,编译器会将程序中出现内联函数的调用表达式用内联函数的函数体来替换。而内联函数是真正的函数,会对参数的类型、函数体内的语句编写是否正确等进行检查。转载 2023-09-05 16:29:09 · 80 阅读 · 0 评论 -
C++中的常引用
有的时候在翻看别人代码的时候可能会遇到类似于这样一个函数参数const int& 就是一个常引用,既不能被修改的引用,你可能会有疑问为什么不直接传参数进来非要传一个常引用?转载 2023-09-05 14:39:02 · 71 阅读 · 0 评论 -
volatile类型解析
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。转载 2023-09-01 13:50:31 · 186 阅读 · 0 评论