昨晚模拟面试又被虐了。所以又来烤面筋了。面试总结下午再写,老师让我录音了,下午时间比较多。
文章目录
Question One:说一说C++函数栈空间的最大值
默认是1M,不过可以调整。
Question Two:请你来说一说extern“C”
C++调用C函数需要extern C,因为C语言没有函数重载。
Question Three:请你回答一下new/delete与malloc/free的区别是什么 ?
1、new/delete是C++的关键字,而malloc/free是C语言的库函数。
2、后者使用必须指明申请内存空间的大小,对于类类型的对象,后者不会调用构造函数和析构函数
Question Four:请你说说虚函数表具体是怎样实现运行时多态的?
说真的,这个还真没了解过。
子类若重写父类虚函数,虚函数表中,该函数的地址会被替换,对于存在虚函数的类的对象,在VS中,对象的对象模型的头部存放指向虚函数表的指针,通过该机制实现多态。
Question Five:请你说说C语言是怎么进行函数调用的?
每一个函数调用都会分配函数栈,在栈内进行函数执行过程。调用前,先把返回地址压栈,然后把当前函数的esp指针压栈。
参数压栈顺序:从右到左。
Question Six:请你说说C++如何处理返回值?
生成一个临时变量,把它的引用作为函数参数传入函数内。