C++面试题大全
[TOC]
C++内存模型
1.C/C++内存有哪几种类型
C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。
2.C++堆和栈的区别?
1)堆存放动态分配的对象——即那些在程序运行时动态分配的对象,比如 new 出来的对象,其生存期由程序控制;
2)栈用来保存定义在函数内的非static对象,如局部变量,仅在其定义的程序块运行时才存在;
3)静态内存用来保存static对象,类static数据成员以及定义在任何函数外部的变量,static对象在使用之前分配,程序结束时销毁;
4)栈和静态内存的对象由编译器自动创建和销毁。
3.堆和自由存储区的区别?
总的来说,堆是C语言和操作系统的术语,是操作系统维护的一块动态分配内存;自由存储是C++中通过new与delete动态分配和释放对象的抽象概念。他们并不是完全一样。
从技术上来说,堆(heap)是C语言和操作系统的术语。堆是操作系统所维护的一块特殊内存,它提供了动态分配的功能,当运行程序调用malloc()时就会从中分配,稍后调用free可把内存交还。而自由存储是C++中通过new和delete动态分配和释放对象的抽象概念,通过new来申请的内存区域可称为自由存储区。基本上,所有的C++编译器默认使用堆来实现自由存储,也即是缺省的全局运算符new和delete也许会按照malloc和free的方式来被实现,这时藉由new运算符分配的对象,说它在堆上也对,说它在自由存储区上也正确。
C++面向对象
1.简述一下C++中的多态实现的原理。
C++语法
1. const关键字的作用
2. C++是否是类型安全的语言?
3. static关键字的用法和作用
4. typedef和define有什么区别
C++指针相关
1.C/C++引用和指针的区别?
2.C++的智能指针的分类?
C++数据结构
1.C++的链表和数组有什么区别?
2.简述C++简述队列和栈的异同
C++性能优化
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 麦溪·在路上!
评论
ValineDisqus