linux c/c++面试知识点整理(八)

71、能不能从构造函数调用虚函数,为什么?

       可以的,只是虚函数会使用基类的虚函数。

72、什么时候可能会出现这种情况?设定的断点在main()函数的第一行,但是程序运行后没有执行到断点就崩溃退出了?

       全局变量的构造函数崩溃。

73、如何处理一个析构函数失败,可以抛出一个异常?

       最好不要抛出,如果一定要抛出,那要在析构函数内部处理。

74、如何处理构造函数失败?

       抛出异常,若有动态分配内存,则要在抛异常之前手动释放。

75、friend违反封装原则了吗,为什么?

       违反了,友元函数可以不受访问权限的限制而访问类的任何成员。

76、脏数据是怎么发生的?

       数据被删除,但另一用户没有刷新,使用了该数据,这就是脏数据。

77、什么是模板的特例化?

       模板的特例化是指将typename指定类型用一个已知类型替代了,用已知类型重新实现了模板函数和类,如果模板有2个参数,只实例化了一个参数,则是偏特化(局部特化)。

78、STL仿函数需要重载哪个操作符?

       operator(),仿函数是指可以“使用小括号传递参数,来调用某个东西”。

79、c++中前置操作符和后置操作符有什么区别?哪个效率更高?

       前置是先将自身改变再参与表达式运算,可以当作左值使用;
       后置是先参与表达式计算再改变自身的值,返回的是右值,不能当作左值使用(i++=6 错误),前置效率高,因为后置会产生临时对象。

80、fork后父子进程的内存布局

       调用fork之后,系统会为子进程建立父进程的副本,即子进程获得父进程数据空间、堆、栈的副本,父子进程之间并不共享这些存储空间部分,但父进程和子进程会共享正文段。
       而因为现在fork以后通常会执行exec函数,所以现在一开始的时候子进程并没有完全获得父进程的存储空间的副本,作为替代,使用了"写时复制"技术,即这些区域开始由父进程和子进程共享,而且内核将它们的访问权限改为只读,如果父进程和子进程任一个试图修改这些区域,则内核会为修改区域的那块内存制作一个副本,通常是虚拟存储系统中的一个页。
       调用fork()之后先执行哪个进程的是由Linux下专有文件/proc/sys/kernel/sched_child_runs_first的值来确定的(值为0父进程先执行,非0子进程先执行)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 13,297评论 0 45
  • 51、对称加密算法和非对称加密算法 对称加密算法 对称加密才用了对称密码编码技术,它的特点是文件加密和解密使用...
    cpp加油站阅读 3,863评论 0 7
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 7,227评论 1 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,183评论 19 139
  • 也许这辈子再也没有人能让我如此心动,除了你。在黑暗无边的宇宙里,就算穿越整个银河系我也要找到你。哪怕只是你...
    小夜七瑶阅读 2,118评论 0 0

友情链接更多精彩内容