标签搜索

目 录CONTENT

文章目录

「死磕面试」C++基础面试问题汇总(一)

沙漠渔
2023-03-06 22:04:50 / 1 评论 / 1 点赞 / 497 阅读 / 1,846 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-03-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Cbanner.jpeg
1- 问题: C++ 编程语言提供了几种循环类型?分别是什么?
回答: for、while、do while
问题: break和continue的区别
回答: break跳到循环或者选择的下一条语句,continue跳过循环主体的剩余部分,立即重新开始新的一轮循环

2- 问题: 栈和队列的区别
回答: 栈又名堆栈,是一种运算受限的线性表。只允许在栈顶插入和删除元素。栈顶是低位,栈底是高位。栈中没有元素时称为空栈,栈符合先进后出原则(LIFO,last in first out)。队列也是一种运算受限的线性表。 特殊之处在于它只允许在队列的前端(front,队头)进行删除操作,而在队列的后端(rear,队尾)进行插入操作。当队列中没有元素时,即front=rear,称为空队列。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。队列符合先进先出(FIFO—first in first out)原则

3- 问题: 定义和声明的区别
回答: 声明是告诉编译器变量的类型和名字,不会为变量分配空间,定义需要分配空间,同一个变量可以被声明多次,但是只能被定义一次

4- 问题: C++面向对象编程的三大特点分别是什么
回答: 封装、继承和多态

5- 问题: 如何理解封装性的
回答: 将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)。

6- 问题: 如何理解继承性的
回答: 继承主要实现重用代码,节省开发时间,子类可以继承父类的属性和方法。

7- 问题: 如何理解多态性的
回答: 是将父类对象设置成为和一个或更多它的子对象相等的技术。用子类对象给父类对象赋值之后,父类对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。多态又分为静态多态和动态多态。

8- 问题: 静态多态的理解
回答: 也称为静态绑定或前期绑定(早绑定):函数重载和函数模板实例化出多个函数(本质也是函数重载)。静态多态也称为编译期间的多态,编译器在编译期间完成的,编译器根据函数实参的类型(可能会进行隐式类型转换),可推断出要调用那个函数,如果有对应的函数就调用该函数,否则出现编译错误。

9- 问题: 动态多态的理解
回答: 也称为动态绑定或后期绑定(晚绑定):在程序运行期间,根据具体拿到的类型确定程序的具体行为,调用具体的函数,即运行时的多态。在程序执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用相应的方法。

10-问题: 什么是纯虚函数
回答: 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加 =0;其实应该可以理解成Java中接口定义的函数

11-问题: 纯虚函数的特征
回答: 必须在继承类中重新声明函数(不要后面的=0,否则该派生类也不能实例化),而且它们在抽象类中往往没有定义。定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口。

12-问题: 类的静态成员函数和类的普通成员函数的主要区别是什么?
回答: 静态成员函数不包含指向具体对象的this指针,普通成员函数包含一个指向具体对象的this指针。静态成员函数不可以调用类的非静态成员,静态成员函数不含this指针,属于类,不再仅仅属于具体的对象。

13-问题: 重载和重写的区别
回答:定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。范围不同---重载是在一个类中,重写是子类与父类之间的。多态不同---重载是编译时的多态性,重写是运行时的多态性。返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。

1
广告 广告

评论区