C++中的多态:virtual 关键字

面向对象的三大基本特征:封装、继承和多态。类对象通过 public/private/protected 关键字实现对象的封装,封装后通过继承实现多样性,而这个多样性又需要通过多态来完成。

假设要实现一个攻击的功能,不同的角色战斗力的都不同,在以往的 c 中,要完成这个功能需要对每个不同的角色都添加一个攻击函数:

而在有多多态后,所有的函数都可以合并为一个:

阅读更多

C++类对象的声明方式和注意事项

定义以下类:

阅读更多

面试题:C++中 malloc/free/new/delete/new[]/delete[] 的差别

一、几者的区别 malloc/free 是 c 语言中分配内存空间的函数,malloc 创建空间,free 释放空间。 new/delete 是 c++中分配内存的操作符,new 创建空间,delete 删除空间。 new[]/delete[] 也是 C++中的操作符,用来给数组分配和释放空间。 malloc 只是简单的分 ... 阅读更多

链表的遍历和反转

一、链表的遍历 链表的遍历算是十分简单了,从头到尾获取 next 指针的值,如果 next 不为 0,一直打印。

这是一个链表和双向链表都可以使用的打印方式,但是对于循环链表来说要注意起始节点。 二、链表反转 链表反转在面试中经常会考的问题,总 ... 阅读更多

计算机中的字节序

一、概述 字节序用来表示数据在内存中的排布方式,它分为两种:高字节序和低字节序,也被称为大小字节序。因为内存是从低到高布局,所以如果内存的低位存的是数据的低位,该字节序被称为低字节序。而如果内存的低位存的数据高位,该字节序被称为高字节序。 例如一个 32 位 int 类型变量 n=0x12345678(逻辑中 ... 阅读更多

C++构造函数的执行顺序

一、构造函数的执行规则

C++构造函数的调用顺序为:

  • 如果类中包含静态成员变量,先执行静态成员变量的构造函数。
  • 如果类是派生类,则先执行基类的构造函数。同样如果基类也是一个派生类,它也要先执行基类的构造函数。
  • 执行成员变量中的构造函数,根据定义的顺序来,先执行类内初始化,再执行列表初始化。
  • 执行本类的构造函数。

阅读更多

C++变量的声明、定义和 extern 关键字

一、变量的声明和定义

C++的分离编译机制允许程序拆分成多个文件来写,最常见的是在头文件中进行声明,源文件中进行定义,然后一起编译:

声明使得函数或者变量被程序所知,定义负责创建与声明相关联的实体。变量只能被定义一次,但能多次声明。

阅读更多