04 2021 档案

摘要:默认构造函数是可以不用实参数来进行的构造函数它包括了两种 1.没有带明显形参的构造函数 2.提供了默认形参的构造函数 类设计者可以自己写一个默认构造函数,编译器帮我们写的默认构造函数称为合成的默认构造函数,编译器总会给我们的构造函数增加一个隐含的this指针,所以本质上,是没有不带形参的构造函数的。 阅读全文
posted @ 2021-04-27 11:18 陌天森 阅读(598) 评论(0) 推荐(0)
摘要:c++虚函数表位于.rodata段,虚函数位于代码段。 当基类有虚函数时 1.每个类都有虚指针和虚表 2.如果不是虚继承,那么子类将父亲的虚指针继承下来,并指向自己的虚表(发生在对象构造的时候),有多少个虚函数,虚表里面的项就会有多少,多重继承时,可能存在多个基类虚表和虚指针 3.如果是虚继承,那么 阅读全文
posted @ 2021-04-25 16:46 陌天森 阅读(207) 评论(0) 推荐(0)
摘要:gcc时经过了四个步骤:预处理,编译,汇编,链接 预处理 gcc -E 处理源代码hello.c和其相关的头文件(stdio.h):将其生成为一个hello.i文件 预处理干了什么? 预处理主要处理那些以#开头的预编译指令:如#include,#define 1.将所有的#define删除,并且展开 阅读全文
posted @ 2021-04-17 18:00 陌天森 阅读(301) 评论(0) 推荐(0)
摘要:gcc -Og(生成符合原始c代码结构的机器代码) -S(生成所对应的汇编文件) hello.c 在实际开发过程中,会选用-O1或者-O2这种优化选项。但是使用高级别优化生成的代码会严重变形,导致产生的机器代码和最初的源代码之间的关系难以理解 -C会生成机器码,可以用obgdump转为汇编代码查看 阅读全文
posted @ 2021-04-15 00:47 陌天森 阅读(179) 评论(0) 推荐(0)
摘要:浮点数 float = (-1)S * FRAC * 2EXP(四个字节) 在内存中依次是:S(符号),EXP(阶码),FRAC(尾数) 分别占用:1位,8位,23位 double = (-1)S * 2EXP* FRAC(八个字节) 在内存中分布和float一样 分别占用:1位,11位,52位 浮 阅读全文
posted @ 2021-04-12 20:38 陌天森 阅读(116) 评论(0) 推荐(0)
摘要:十六进制表示法 用十进制表示二进制比较麻烦,所以人们通常用十六进制来表示二进制 可以记住ACF三个十六进制数字对应的二进制数字的数值来推算BDE A: 0X1010 C: 0X1100 F: 0X1111 2^n和十六进制的转换 2n == 1后面n个零 n = i + 4j 转换为十六进制就是0X 阅读全文
posted @ 2021-04-12 16:45 陌天森 阅读(158) 评论(0) 推荐(0)
摘要:源文件变为可执行文件的过程 hello.c通过预处理器变为hello.i再通过编译器变为hello.s在通过汇编器变为hello.o,最后再和其他的比如printf.o文件通过链接器生成可执行文件hello.out。 预处理器:根据以带#的命令来修改原来的程序,比如#include告诉编译器读取系统 阅读全文
posted @ 2021-04-11 19:21 陌天森 阅读(113) 评论(0) 推荐(0)