C++面试题求助

今天面试面试官问我一个问题,我没太理解什么意思。
问:如何定义一个类,使它只在栈上或者堆上。
答:是通过这个类构建的对象在栈还是堆上吗,如果使用new来定义,它就在堆上,如果直接定义他就在栈上。
问:怎么保证无论怎么定义,他都在栈上和堆上呢
答:对象定义的时候都会调用构造函数,在构造函数中将类成员都定义在堆上就可以了。

然后他说我下去再想想,是哪里出问题了吗,还有别的方法啥的吗
全部评论
这个是很常见的面试题了吧,定义堆上的对象,意思就是只能new。因此可以考虑私有化析构函数。 当然不仅需要私有化析构函数,还需要类内部提供delete的接口,不然你new了,外部没法delete的。 另外私有不要设置为private,设置成protected是最好的。这样子类还是能调用父类析构函数的。 至于定义只能在栈里面生成对象的类,我看了很多人都是说重载operator new,并且设置为私有。 其实这样是不行的,你自己重载了operator new,仍然可以通过::new的方式,调用全局作用域的new函数,绕过你自己重载的operator new,所以这个我感觉不能定义出这样的类
25 回复 分享
发布于 2023-08-05 17:26 湖北
【【C++面试100问】第三十问:如何定义一个只能在堆上或栈上创建对象的类】https://www.bilibili.com/video/BV1g8411U73R?vd_source=a5ae97ab0b180bcc75987113d2fb2d58
13 回复 分享
发布于 2023-08-05 11:45 广东
靠编译器来完成,把析构函数设为私有,就不能定义栈上的对象
10 回复 分享
发布于 2023-08-05 00:32 北京
重载delete函数,设为delete这样就只能建在栈上。 把析构函数私有,只能建在堆上
3 回复 分享
发布于 2023-08-05 13:33 江苏
之前看过,没想到真有这么问的?
1 回复 分享
发布于 2023-08-05 11:46 广东
除了私有析构的话,可不可以私有化构造函数,像单例一样提供一个getinstance接口,在接口里面new?
点赞 回复 分享
发布于 2023-09-01 16:35 上海
只在堆上,就需要关闭栈上的分配和释放内存,私有化析构函数,如果私有化构造,new都不能new。只在栈上,就得关闭new的分配方法也就是operator new。
点赞 回复 分享
发布于 2023-08-26 21:45 黑龙江
能不能直接单例模式
点赞 回复 分享
发布于 2023-08-24 12:22 四川
同学,华为24年应届秋招提前批已经开始,有兴趣了解下计算产品线情况以及优势吗?
点赞 回复 分享
发布于 2023-08-10 18:09 广东

相关推荐

非常好的面试官非常差的我1h17minc++经典三大特性虚函数内存对齐(当时背八股明明看到有的,结果没认真看😭)数据类型的字节大小(那这个反驳我上面的错误😭)匿名函数左值右值其他忘了,考的挺多,因为我简历太简单了图形学:mvp矩阵的vp矩阵的推导(我真是太怠惰😭)相机与观察矩阵的关系(其实就是逆,我想太多了)纹理过滤pbr延迟着色ssao blur是为啥高斯模糊帧缓冲纹理格式泛光伽马校正shadowmap的锯齿解决(bias)各个测试应该要在什么时候进行在我的项目中又该是什么时候进行ibl立方体贴图抗锯齿(故意没考,估计看出来我准备了这个)mipmaphdrps:不要觉得就知道个概念就行,一定要深挖其内涵,鼠鼠第一次面试被拷打晕过去了要场景题:实现反射,只用两次渲染得到所需贴图,不能是立方体贴图(本来想考ssr的看我不会)结合我的项目对整个延迟渲染管线拷打算法题:两道e口述链表环连续子字符串反问:q:我是第一次面试,请问您对我的建议:a:乍一看基础还行,其实经不住深挖,简历太简单没啥好问的所以只能散着问问,多增加自己的经历吧q:我知道我这次面的很差,如果这次面试挂了,您觉得我是进老师实验室实习好还是继续找实习好a:如果你要读研读博的话,还是去老师实验室好,实习只是一段增长你见识的经历,如果就业的话还是实习好,你们学校挺多大二就实习的q:那您觉得以我当前的水平和简历能找到实习吗a:丰富下简历,有些公司比较闲会给些简单任务给你,还是有机会的结束😭无论结果如何,我都非常感谢这个公司给了我这么一次机会,也非常感谢面试官这样把我的盲区揪出来(小插曲:这个面试我太笨了居然约了hr找我一天之后,真的打了我个措手不及,24小时只睡了5小时吃了1小时,其他时间完全复习,再也不这么匆忙了)
点赞 评论 收藏
分享
03-06 17:03
北京大学 C++
1.C++11 的新特性有哪些1.1说下智能指针1.1.1shared_ptr 它是线程安全的吗1.2nullptr 有什么作用,以前有 NULL,为什么要加一个 nullptr2.const 和 static 的作用2.1还有哪些其他作用,如修饰函数,修饰类里面的函数、类里面的变量。2.2声明类的时候加一个 const,能调用它里面的成员函数吗3.C++ 有哪些类型转换,如 static_cast 之类的3.1reinterpret_cast 的作用是什么3.2了解过 dynamic_cast 吗4.C++ 有哪些 STL 容器4.1vector 和 list 有什么区别5.C++ 一些网络你知道吗,epoll 你用过吗6.你用 Linux 多吗,看一些网络、磁盘 IO、CPU 性能的工具了解吗6.1那网络流量,一个节点到另一个节点的占比的工具用过吗7.进程和线程有什么区别7.1进程之间通信有哪些方式7.1.1信号量了解吗7.2线程之间有哪些通信方式7.2.1锁了解过吗,条件变量了解过吗8.TCP 和 UDP 的区别8.1TCP 和 UDP 都发送若干个网络包,都能确保完整收到这些包吗,收到的顺序对不对9.git 用的是命令还是 GUI9.1写了一些代码还没有存进去,但是另一个人提了一个版本要合进来,该怎么操作9.2git stash 有什么作用10.MySQL 的事务隔离级别有哪些11.怎么知道哪些线程占用的 CPU 比较多12.用过哪些 AI 编程工具12.1改变量的名字的时候用的惯吗13.LeetCode128 最长连续序列吓哭了,沉浸式拷打,自己掌握的还是太薄弱了,面试官人好实力又强,我菜菜😭😭😭
查看30道真题和解析
点赞 评论 收藏
分享
评论
26
170
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务