自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 宏相关基础知识

定义函数宏:可以使用#define指令定义函数宏,例如: #define MAX(a, b) ((a) > (b)?(a) : (b)) 在编译过程中,所有出现的MAX(a, b)将被替换为((a) > (b)?条件编译:可以使用宏定义来进行条件编译,例如: #define DEBUG #ifdef DEBUG // 调试代码 #endif 只有在定义了DEBUG宏的情况下,才会编译DEBUG宏下的代码。在替换的名字后加括号 然后在括号中加入参数 并且在替换的代码段中将想替换的代码换成参数。

2024-01-24 16:06:20 461

原创 C++ 头文件源文件

头文件:单独的头文件不参与编译器的编译源文件:每个源文件自上而下独立进行编译的。

2024-01-24 15:02:36 403

原创 C++ 纯虚函数

父类-抽象类,作为一个抽象的接口,不能定义对象,类中包含纯虚函数称为抽象类。

2024-01-24 14:59:56 341

原创 C++ 虚析构

子类析构重写了父类的析构函数,发生了多态,最终调用的是子类的析构。在回收对象本身的空间时,包含了父类的匿名对象,调用父类的析构。当正常写出构造析构的时候,不会调用子类析构,有可能会导致内存泄露的问题。将父类的析构函数变为虚函数。

2024-01-24 14:57:17 428

原创 C++ 继承多态下的虚函数

指向了哪个类的虚函数列表,是 子类自己的,判断依据: 真实存在的对象(new 哪个类,就指向哪个累的虚函数列表)1、继承:子类不但继承了父类的成员,也会继承父类的额虚函数列表(拷贝到子类的虚函数列表中)。3、如果子类中有单独的虚函数,则按照其声明顺序,依次添加到虚函数列表结尾。2、检查重写: 检查子类中是否有重写父类的虚函数。

2024-01-24 14:55:22 353

原创 C++ 单一类中的虚函数

vftable: 虚函数列表,本质上 虚函数的指针数组,每个元素存储的是虚函数的真正有效的地址。属于类的,每个类中存在一份。__vfptr:虚函数指针,是一个二级(void**类型)的指针,当类中存在虚函数的情况下,在定义对象时,编译器则在对象内存空间的首地址位置增加一个指针大小的空间,即是虚函数指针。虚函数调用流程:定义对象,在对象内存空间的首地址找到__vfptr,通过其描述的地址,找到虚函数列表,通过下标匹配到对应的虚函数。属于对象的在定义对象存在和初始化(在构造函数的初始化参数列表中进行的)

2024-01-24 14:52:13 353

原创 C++ 多态的基本概念

在继承的条件下,父类的指针可以指向任何继承于该类的子类对象,子类具有的形态,父类同时也具有。:相同的行为方式导致了不同的行为结果,同一行语句展现了多种不同的表现形态,即多态性。以上代码演示了实现多态的各种方法。

2024-01-24 14:20:53 453

原创 C++ 类-----隐藏 (小知识)

这时编译器会报错fun()参数不够,即为隐藏了父类的无参fun()函数,如果在子类中也加入无参fun()函数。先将子类的无参fun()注释掉 在main函数中调用fun()下面一段代码来进行解释。这时候调用就不会报错。

2024-01-20 16:09:52 424

原创 C++ 继承的优点 (自用)

本来的代码是每个类中都含有money属性,和cost,walk方法,但是这样重复的相同方法略显累赘,所以可以将这些公共的属性放在一个单独的类中,整合到一起,就变成了如下的形式。继承可以将每个类中公共的属性集合到一起形成一个单独的类,即为父类,并且让这些类继承父类的公共属性。子类继承父类的同时,拥有了这些成员,公共的成员只需要在父类中维护一份即可。当扩展子类时,不用再重复实现公共的方法,只需实现独有的方法。将公共属性都集合到People类中。

2024-01-20 15:37:59 370

原创 C++ 类的继承方式

C++类的继承方式

2024-01-20 15:17:14 305

原创 C++ 类的继承

在子类的初始化参数列表中,会自动调用父类的无参构造函数,在子类的初始化参数列表中,跳转到父类的构造函数。在回收对象时,回收顺序与初始化顺序相反,回收子类自己的成员,如果有其他类的成员,则调用其类的析构函数,因为定义的是子类对象,其生命周期结束,匹配自己类的析构函数,在回收对象本身的空间。可以看到先调用了父类的构造函数执行输出语句,后调用子类构造函数输出语句。可以定义子类对象,通过子类对象,对父类的成员进行调用。定义子类对象,子类和父类的构造都会执行。最后是继承的父类,调父类的析构.下面也用代码来测试一下。

2024-01-20 14:42:09 598

原创 C++ 封装链表

要注意的是添加前链表是否为空,如果链表为空,那么不存在头尾节点,则添加错误。在这里只简单写了几个关于链表的函数功能,也可以根据自己的需要,封装各种函数。并且在结构体中重载构造函数,方便新节点数据的添加。可以在链表类中封装一些与链表有关的功能。包括头尾节点,和链表长度成员属性。下面让我们来对各个函数进行测试。链表数据使用结构体进行封装。

2024-01-19 15:24:50 517 1

原创 C++ const 常量

static void funStatic() //静态函数只能使用静态成员。也可以在类的构造函数的参数列表进行初始化。变量也同样可以在这里指定初始化值。m_a的值没有被初始化成功。一般函数中的this指针为。在一般函数中可以调用常函数。如果不按照顺序初始化则。

2024-01-19 15:02:05 789 1

原创 C++ 类 class

C++中类的相关基础知识

2024-01-15 16:46:47 336

原创 C++中的引用类型 &

C++中的引用&

2024-01-15 14:41:31 434

原创 C/C++ NULL和nullptr的区别

C/C++ NULL和nullptr的区别

2024-01-15 14:15:43 343

原创 C++作用域与动态申请空间

C++作用域与动态申请空间学习笔记

2024-01-15 09:40:59 365

原创 C++输入输出

C++中的输入输出

2024-01-15 09:21:26 295

原创 C++ bool、string、增强的范围for、函数参数默认值、函数重载

学习笔记

2024-01-14 16:54:01 601

空空如也

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

TA关注的人

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