烤面筋的第三场

87 阅读2分钟

在这里插入图片描述

昨晚模拟面试又被虐了。所以又来烤面筋了。面试总结下午再写,老师让我录音了,下午时间比较多。

文章目录


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++如何处理返回值?

生成一个临时变量,把它的引用作为函数参数传入函数内。