摘要: 1. 可执行文件的生成 源代码到可执行文件的生成可分为预处理(Prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking),四个步骤。 1.1 预处理 以 C 语言为例,预处理主要是处理源代码中以“#”开头的那些预处理指令,规则如下: 将所有 “#def 阅读全文
posted @ 2024-03-21 19:23 小熊酱 阅读(215) 评论(0) 推荐(0)
摘要: 背景:静态链接库一旦链接进去,代码和变量的 section 都合并了,因而程序运行的时候,就不依赖于这个库是否存在。但是这样有一个缺点: 就是相同的代码段,如果被多个程序使用的话,在内存里面就有多份; 而且一旦静态链接库更新了,如果二进制执行文件不重新编译, 也不随着更新。 因而就出现了另一种,动态 阅读全文
posted @ 2024-03-21 19:08 小熊酱 阅读(61) 评论(0) 推荐(0)
摘要: 1. this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。 this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也 阅读全文
posted @ 2024-03-21 18:49 小熊酱 阅读(31) 评论(0) 推荐(0)
摘要: 1. 类的访问属性:public,protect,private C++中类的成员变量和函数都带有三种属性中的一种,假如没有特别声明,那么就默认是私有的(除了构造函数)。public表示是公开的,对象可以直接调用的变量或者函数;protect表示是保护性的,只有本类和子类函数能够访问(注意只是访问, 阅读全文
posted @ 2024-03-21 16:45 小熊酱 阅读(446) 评论(0) 推荐(0)
摘要: 1. 继承体系中的内存模型 我们都知道,在C++中,不存在大小是零的类。即便是空类,也要占据一个字节,否则无法比较两个空类对象是否是同一个对象(在C/C++中,默认使用地址来判断两个变量是否是同一个)。 class BaseEmpty { public: BaseEmpty() { std::cou 阅读全文
posted @ 2024-03-21 16:08 小熊酱 阅读(103) 评论(0) 推荐(0)
摘要: 纯虚函数优点 防止派生类忘记实现虚函数,纯虚函数使得派生类必须实现基类的虚函数。 在某些场景下,创建基类对象是不合理的,含有纯虚拟函数的类称为抽象类,它不能直接生成对象。 声明方法: 在基类中纯虚函数的方法的后面加 =0。 virtual void funtion()=0; virtual std: 阅读全文
posted @ 2024-03-21 16:00 小熊酱 阅读(28) 评论(0) 推荐(0)
摘要: 1. 普通类对象是什么布局? struct Base { Base() = default; ~Base() = default; void Func() {} int a; int b; }; int main() { Base a; return 0; } 2. 带虚函数的类对象是什么布局? s 阅读全文
posted @ 2024-03-21 13:11 小熊酱 阅读(36) 评论(0) 推荐(0)
摘要: 问题:C++面向对象编程时,如果我们没有声明任何构造函数constructor,按照以前最初学习,说编译器会自动合成一个默认的无参构造函数default constructor,但是事实确实是这样吗,存不存在例外呢,即使有合成构造函数,那么它又将对类数据进行怎样的初始化呢? 1. 问题一 如果我们没 阅读全文
posted @ 2024-03-21 11:59 小熊酱 阅读(71) 评论(0) 推荐(0)
摘要: 1. 背景 RTTI的英文全称是"Runtime Type Identification",中文称为"运行时类型识别",它指的是程序在运行的时候才确定需要用到的对象是什么类型的。用于在运行时(而不是编译时)获取有关对象的信息。 在C++中,由于存在多态行为,基类指针或者引用指向一个派生类,而其指向的 阅读全文
posted @ 2024-03-21 11:26 小熊酱 阅读(615) 评论(0) 推荐(0)
摘要: 1. 类的大小与什么有关系? 与类大小有关的因素:普通成员变量,虚函数,继承(单一继承,多重继承,重复继承,虚拟继承)。 与类大小无关的因素:静态成员变量,静态成员函数及普通成员函数。 2. 空类 空类即什么都没有的类,按上面的说法,照理说大小应该是0,但是,空类的大小为1,因为空类可以实例化,实例 阅读全文
posted @ 2024-03-21 10:54 小熊酱 阅读(168) 评论(0) 推荐(0)