Class和Structure

 

 

 

 

 

 

 

 

作用域

 

 

 

 

 

 

 

 

 

一个程序分为几个selection

从低地址到高地址,分为代码段,数据段,BSS段

(数据段存放已经初始化的静态或者全局变量,(初始化不为0)

    BSS段存放为初始化或者初始化为0的)

当程序运行之后,会出现栈区和堆区,栈比对地址高,两个区中间存在文件映射区。

 

程序启动的过程:

操作系统首先创建相应的进程并分配私有的进程空间,然后操作系统的加载器负责把可执行文件的数据段和代码段映射到进程的虚拟内存空间中。
加载器读入可执行程序的导入符号表,根据这些符号表可以查找出该可执行程序的所有依赖的动态链接库。
加载器针对该程序的每一个动态链接库调用LoadLibrary
(1)查找对应的动态库文件,加载器为该动态链接库确定一个合适的基地址。
(2)加载器读取该动态链接库的导入符号表和导出符号表,比较应用程序要求的导入符号是否匹配该库的导出符号。
(3)针对该库的导入符号表,查找对应的依赖的动态链接库,如有跳转,则跳到3
(4)调用该动态链接库的初始化函数
初始化应用程序的全局变量,对于全局对象自动调用构造函数。
进入应用程序入口点函数开始执行。

 

移动构造:

移动构造及时讲传入的对象的内存直接分配给使用对象(先删除自己的内存,然后将传入对象的内存进行赋值,再讲传入对象的内存置空。)

 

C++ 类内可以定义引用数据成员吗?

 

c++类内可以定义引用成员变量,但要遵循以下三个规则:

 

  1. 不能用默认构造函数初始化,必须提供构造函数来初始化引用成员变量。否则会造成引用未初始化错误。
  2. 构造函数的形参也必须是引用类型。
  3. 不能在构造函数里初始化,必须在初始化列表中进行初始化。

 

纯虚函数能实例化吗,为什么?派生类要实现吗,为什么?

虚函数的原理采用 vtable。类中含有纯虚函数时,其vtable 不完全,有个空位。

即“纯虚函数在类的vftable表中对应的表项被赋值为0。也就是指向一个不存在的函数。由于编译器绝对不允许有调用一个不存在的函数的可能,所以该类不能生成对象。在它的派生类中,除非重写此函数,否则也不能生成对象。”

所以纯虚函数不能实例化。

虚函数表里存放的内容是什么时候写进去的?

  1. 虚函数表是一个存储虚函数地址的数组,以NULL结尾。虚表(vftable)在编译阶段生成,对象内存空间开辟以后,写入对象中的 vfptr,然后调用构造函数。即:虚表在构造函数之前写入

 

 

左值引用和右值引用的区别

 

 

帧同步和状态同步

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 https://blog.csdn.net/weixin_42538789/article/details/114144569 //面试30道

https://www.runoob.com/design-pattern/design-pattern-tutorial.html   // 设计模式

posted on 2022-09-21 12:19  偷懒的阿贤  阅读(29)  评论(0)    收藏  举报