[完结7章]C++大厂面试真题宝典 精选100道

鲍二家的
• 阅读 85

学习地址1:https://pan.baidu.com/s/1I0qkwahl1lTPYhYAB8I4gw 提取码:8rqi 学习地址2:https://share.weiyun.com/mzwzUqJU 密码:4r3u73

C++大厂面试汇总,希望对大家的面试有帮助: 1、C和C++的区别 C是面向过程的语言,而C++是面向对象的语言。 C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。 C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。 C++支持重载,而C语言不支持。 C++有引用,C没有。 C++全部变量的默认链接属性是外链接,而C是内链接。 C 中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以。

2、delete与 delete []区别 delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。在More Effective C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operator delete来释放内存。”delete与new配套,delete []与new []配套 MemTest *mTest1=new MemTest[10]; MemTest *mTest2=new MemTest; Int *pInt1=new int [10]; Int *pInt2=new int; delete[]pInt1; //-1- delete[]pInt2; //-2- delete[]mTest1;//-3- delete[]mTest2;//-4- 在-4-处报错。 这就说明:对于内建简单数据类型,delete和delete[]功能是相同的。对于自定义的复杂数据类型,delete和delete[]不能互用。delete[]删除一个数组,delete删除一个指针。简单来说,用new分配的内存用delete删除;用new[]分配的内存用delete[]删除。delete[]会调用数组元素的析构函数。内部数据类型没有析构函数,所以问题不大。如果你在用delete时没用括号,delete就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。

3、什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

4、指针和引用的区别,引用可以用常指针实现吗。 本质上的区别是,指针是一个新的变量,只是这个变量存储的是另一个变量的地址,我们通过访问这个地址来修改变量。 而引用只是一个别名,还是变量本身。对引用进行的任何操作就是对变量本身进行操作,因此以达到修改变量的目的。

5、重写和重载的区别 重写指的是在派生类中重新定义基类的虚函数的行为。当基类中的某个虚函数在派生类中被重新定义时,如果派生类对象调用该函数,则会覆盖掉基类中的实现,执行派生类中的实现代码。在进行对象的多态性转换时,重写非常重要。 重载则指的是在同一个作用域内声明几个同名但是参数列表不同的函数。通过函数名相同但参数类型、个数或顺序的不同,可以让多个函数具有不同的行为。例如,C++ 中可以重载函数来处理不同类型的数据,如整数、浮点数等。在使用函数时,根据传递给函数的参数类型和个数来自动选择对应的函数进行调用。 因此,重写和重载的主要区别在于,重写是通过派生类重新定义基类虚函数的行为,以实现运行时多态性;而重载是在同一作用域内声明几个相同名称的函数,以实现编译时多态性。

6、C/C++引用和指针的区别? 指针是一个实体,需要分配内存空间;引用只是变量的别名,不需要分配内存空间。引用在定义的时候必须进行初始化,并且不能够改变;指针在定义的时候不一定要初始化,并且指向的空间可变。有多级指针,但是没有多级引用,只能有一级引用。指针和引用的自增运算结果不一样。

7、什么是虚函数? 虚函数是C++中的一种特殊函数,它可以实现多态性。当一个类中包含至少一个虚函数时,它就被称为虚类或抽象类。这些虚函数由子类重写,使得它们可以根据需要对基类的行为进行扩展和修改。通过使用虚函数可以实现动态绑定和运行时多态。 以上是一些常见的C++面试题及其答案,当然可能还有其他的问题涉及到了更深入的知识点。无论何种情况,我们应该保持谦虚、认真和热情,去面对每一个机会,以便在面试中显示出自己的技能和才能。

8、#define和const的区别 1)#define定义的常量没有类型,所给出的是一个立即数;const定义的常量有类型名字,存放在静态区域 2)处理阶段不同,#define定义的宏变量在预处理时进行替换,可能有多个拷贝,const所定义的变量在编译时确定其值,只有一个拷贝。 3)#define定义的常量是不可以用指针去指向,const定义的常量可以用指针去指向该常量的地址 4)#define可以定义简单的函数,const不可以定义函数

9、虚函数是怎么实现的 每一个含有虚函数的类都至少有有一个与之对应的虚函数表,其中存放着该类所有虚函数对应的函数指针(地址), 类的示例对象不包含虚函数表,只有虚指针; 派生类会生成一个兼容基类的虚函数表。

10、关键字static的作用 1)函数体内: static 修饰的局部变量作用范围为该函数体,不同于auto变量,其内存只被分配一次,因此其值在下次调用的时候维持了上次的值 2)模块内:static修饰全局变量或全局函数,可以被模块内的所有函数访问,但是不能被模块外的其他函数访问,使用范围限制在声明它的模块内 3)类中:修饰成员变量,表示该变量属于整个类所有,对类的所有对象只有一份拷贝 4)类中:修饰成员函数,表示该函数属于整个类所有,不接受this指针,只能访问类中的static成员变量 注意和const的区别!!!const强调值不能被修改,而static强调唯一的拷贝,对所有类的对象

11、C++文件编译与执行的四个阶段 1)预处理:根据文件中的预处理指令来修改源文件的内容 2)编译:编译成汇编代码 3)汇编:把汇编代码翻译成目标机器指令 4)链接:链接目标代码生成可执行程序

12、C++的内存管理 在C++中,内存被分成五个区:栈、堆、自由存储区、静态存储区、常量区 栈:存放函数的参数和局部变量,编译器自动分配和释放 堆:new关键字动态分配的内存,由程序员手动进行释放,否则程序结束后,由操作系统自动进行回收 自由存储区:由malloc分配的内存,和堆十分相似,由对应的free进行释放 全局/静态存储区:存放全局变量和静态变量 常量区:存放常量,不允许被修改

13、变量的作用域及生命周期 1.全局变量 从静态存储区域分配,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用。如果程序是由多个源文件构成的,那么全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,但必须在其他文件中通过使用extern关键字来声明该全局变量。

2.全局静态变量 从静态存储区域分配,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用。与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用。

3.局部变量 从栈上分配,其作用域只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,也即该变量的生命周期和该函数同在。

4.局部静态变量 从静态存储区域分配,其在第一次初始化后就一直存在直到程序结束。该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。

点赞
收藏
评论区
推荐文章
赵颜 赵颜
4个月前
[23章附电子书]SpringBoot+Vue3+MySQL集群 开发健康体检双系统
学习地址1:https://pan.baidu.com/s/1WWeuY50AZ0d3rbJ0LJ4pg提取码:kubm学习地址2:https://share.weiyun.com/74nsFIu0密码:ih38qp大家都知道医疗行业是互联网发展前景极好的
荀勗 荀勗
4个月前
SpringBoot+Vue3+MySQL集群 开发健康体检双系统(附电子书+23章全)
学习地址1:https://pan.baidu.com/s/1kWztQpuWaF1utuAGN1E5gw提取码:t547学习地址2:https://share.weiyun.com/74nsFIu0密码:ih38qp今天跟大家讲一个关于体检健康双系统的
赵嬷嬷 赵嬷嬷
4个月前
[升级16章+电子书]SpringBoot+Vue3 项目实战,打造企业级在线办公系统
学习地址1:https://pan.baidu.com/s/1gx9YoT3asP0fRdlwnBzXIQ提取码:ftyi学习地址2:https://share.weiyun.com/jVSDdcBU密码:cruqf9SpringBootVue3项目实战
双寿 双寿
3个月前
Vue3+Pinia+Vite+TS 还原高性能外卖APP项目[完结10章]
学习地址1:https://pan.baidu.com/s/1qGqggdxT2yUf0ifiFUeYg提取码:jgap学习地址2:https://share.weiyun.com/Wjw3QpeQ密码:gxrfcw大家好,今天我将带着大家用Vue3Pi
赵嬷嬷 赵嬷嬷
3个月前
AI最火Agent实战(打造你代理)-Agent教程2024
学习地址1:https://pan.baidu.com/s/1oE7h2kqLz7Y6ymbYBPutw提取码:01xo学习地址2:https://share.weiyun.com/olW8Mzf0密码:6bag56大厂偏爱的Agent技术究竟是个啥,今天
赵嬷嬷 赵嬷嬷
3个月前
WPF高级实战课程《知产代理数字化解决方案》
学习地址1:https://pan.baidu.com/s/1J0cDIHK8T49QABEimK9UA提取码:ypzr学习地址2:https://share.weiyun.com/7RUYskT6密码:adbvfp一、什么是WPF?WPF是微软新一代图形
笑面虎 笑面虎
2个月前
C++大厂面试真题宝典 精选100道
C大厂面试真题宝典精选100道好课大家一起分享——C大厂面试真题宝典精选100道,附课程源码下载。C和C的区别C是面向过程的语言,而C是面向对象的语言。C和C动态管理内存的方法不一样,C是使用malloc/free函数,而C除此之外
双寿 双寿
2个月前
C++大厂面试真题宝典 精选100道[完结7章]
参考资料1:https://pan.baidu.com/s/1FoFcRadpRsEPmnSysrEIlA提取码:mqmu参考资料2:https://share.weiyun.com/mzwzUqJU密码:4r3u73给大家整理了一些关于C大厂面试20
鲍二家的 鲍二家的
1个月前
AI Agent智能应用从0到1定制开发(12章)
学习地址1:https://pan.baidu.com/s/1ccnoXsPCUg4eP5rSrD0UA提取码:o0mu学习地址2:https://pan.baidu.com/s/1JYJ6dMkwgx0XWQnCM6Q0A提取码:2m68AIAgent已
鲍二家的 鲍二家的
1个月前
[完结17章]SpringBoot3+Vue3 开发高并发秒杀抢购系统
学习地址1:https://pan.baidu.com/s/1DRZXkQeGkrPwhVTd2ko00g提取码:gpwn学习地址2:https://share.weiyun.com/ysK13sR2密码:74m96t众所周知,作为开发新手,入行、实习、转