阿里海外电商 Lazada C++ 面经
inline 失效的场景有哪些呀,有没有大佬解释一下
====
1. C++ 中 struct 和 class 区别
2. inline 失效场景
3. 智能指针
4. g++ 编译过程
5. epoll,mutex
6. event_loop 了解吗
7. 如何防止一个头文件 include 多次
8. 如何快速判断 2^n,链表判断有环,手撕 LRU
====
1. C++ 中 struct 和 class 区别
2. inline 失效场景
3. 智能指针
4. g++ 编译过程
5. epoll,mutex
6. event_loop 了解吗
7. 如何防止一个头文件 include 多次
8. 如何快速判断 2^n,链表判断有环,手撕 LRU
全部评论
在C++中,inline是一种用于优化函数调用的关键字。它的作用是将函数的定义直接插入到调用该函数的地方,以减少函数调用的开销。然而,并非所有情况下都能成功地使函数内联,以下是一些导致inline失效的场景:
函数体过大:如果函数体非常大,将其内联可能导致代码膨胀,造成代码冗余和缓存不命中,反而降低了性能。编译器可能会忽略inline关键字,将函数视为普通的非内联函数。
函数包含递归调用:递归函数无法直接内联,因为递归调用会导致函数体重复嵌套,无法在编译时展开。
虚函数:虚函数是通过虚函数表进行动态绑定的,编译器无法在编译时确定调用哪个函数,因此虚函数不能内联。
函数指针:当函数通过函数指针进行调用时,编译器无法在编译时确定具体调用哪个函数,因此无法内联。
条件判断、循环和异常处理:包含复杂的条件判断、循环和异常处理的函数,由于控制流程的复杂性,编译器可能不会内联这些函数。
inline函数好像是将代码直接替换到调用的位置,提高效率,建议性的关键字,一般来说还看编译器是否优化。
1、函数内太多for或者if选择。
2、递归函数。
3、构造和析构函数。
4、虚函数。
5、使用函数指针调用内联函数。(这个不清楚。。。)
老哥是实习还是提前批呀
手撕在哪个平台撕的啊 楼主
这么难
,是北京那个引擎架构嘛
有后续了吗
面试用了多久
相关推荐