电信云计算
重载与覆盖的区别
重载 | 覆盖 | 隐藏1 | 隐藏2 | |
函数名 | 相同 | 相同 | 相同 | 相同 |
函数返回类型 | 相同 | 相同 | 相同 | 相同 |
函数参数个数 | 不同 | 相同 | 不同 | 相同 |
有无vitral | 有/无 | 基类有 | 有/无 | 无 |
重载是一个类中,函数返回类型,函数名相同,参数不同的函数为重载函数。覆盖是在基类与派生类之间,派生类中与基类相同函数名,相同函数参数的函数。
什么是虚析构函数
C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数。那么在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。
东方国信
一个程序从编写到运行需要什么步骤
猿辅导
自我介绍
什么是MVC(看简历提问)
C++的多态是什么
(1)静态多态(重载,模板)
是在编译的时候,就确定调用函数的类型。
(2)动态多态(覆盖,虚函数实现)
在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。
虚函数实现原理:虚函数表和虚函数指针。
纯虚函数: virtual int fun() = 0;
指针与引用的区别
- 指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。
- 引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(注:不能有引用的值不能为NULL)
- 有多级指针,但是没有多级引用,只能有一级引用。
- 指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量值加1)
- sizeof 引用得到的是所指向的变量(对象)的大小,而sizeof 指针得到的是指针本身的大小。
- 引用访问一个变量是直接访问,而指针访问一个变量是间接访问。
- 使用指针前最好做类型检查,防止野指针的出现;
- 引用底层是通过指针实现的;
- 作为参数时也不同,传指针的实质是传值,传递的值是指针的地址;传引用的实质是传地址,传递的是变量的地址。
static关键字的作用
const的作用
笔试题:
一个数字按位依次放入一个单链表,低位在尾部。求执行➕1 ***作后的单链表。要求:空间复杂度为O(1)。