C++面试题
记录几个C++比较细的问题
1、虚函数表共享问题
2、空指针能访问成员函数吗? ex: A* p=nullptr;p->f();
3、sizeof(lambda表达式) 的值?
4、memset(this,0,sizeof(*this))合法吗?
更新:加入一个牛友评论的问题
5、如果在构造函数里面调用了一个该类的虚函数,会发生什么?
1、虚函数表共享问题
2、空指针能访问成员函数吗? ex: A* p=nullptr;p->f();
3、sizeof(lambda表达式) 的值?
4、memset(this,0,sizeof(*this))合法吗?
更新:加入一个牛友评论的问题
5、如果在构造函数里面调用了一个该类的虚函数,会发生什么?
全部评论
最后三个光子一面全问了
cpp的终点:变成人肉编译器?
2.空指针可以访问成员函数,不可以访问成员变量,因为存储的位置不一样
sizeof(lamda表达式) 的应该会和捕获的变量类型以及数量有关吧,然后再考虑内存对齐问题
第二个:对象的成员变量和成员函数存放位置不同,成员变量是在对象内存内的,虚函数导致有虚函数指针这个隐式成员变量,如果空指针不涉及到成员变量和虚函数,那么即空指针并没有访问对象的内存,所以没事。 我理解的不知道对不对!
2. 能访问, 成员函数本质是一个普通函数加一个类的 this 指针参数, 函数本身存在 text 段, 所以类对象能直接访问, 貌似可以这样理解?
有没有大佬给个答案
第二个前几天我就被问到了😭
第四个被问到过,没答出来
m
这几个问题好难,一个也答不上来
佬,我昨天遇到一个问,如果在构造函数里面调用了一个该类的虚函数,会发生什么,这种怎么搞呀我只知道构造函数不能是虚的
Cpp卷爆炸了呀,本来就没多少岗位来,这么多人直接寄
我比较好奇第一个,虚函数表这个要回答到什么程度?
是说,一个类用一个虚函数表就行了,还是有更深的。
第二个空指针是UB
深度探索C++对象模型
第一个要达到什么程度呢?就是调用继承类就指向虚表对应的位置就行了吗?
相关推荐
查看10道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享