此博客主要用于面试展示,大部分内容为|

修竹Kirakira

园龄:2年11个月粉丝:13关注:0

02 2023 档案

Windows 核心编程笔记 [1] Windows 错误处理
摘要:[1] Windows 错误处理 1. 关于windows系统函数的返回值错误处理 VOID:这个函数不可能失败 BOOL:如果函数调用失败,返回值为0,即为FALSE,否则为非0值,即为TRUE HANDLE:如果函数失败,返回NULL,否则HANDLE将标识一个可以操控的对象 某些函数会返回为I
111
0
0
虚继承
摘要:1. 菱形继承 1)概念 ​ B,C继承自A,D继承自B,C 2)问题 ​ 一个派生类中保留间接基类的多份同名成员,可能出现命名冲突和冗余数据问题 2. 虚继承 c++代码示例: #include <stdio.h> //定义家具类,虚基类,等同于类A class Furniture { publi
50
0
0
抽象类
摘要:1. 纯虚函数 1)概念 ​ 在虚函数的声明结尾处添加“=0”,这种虚函数被称为纯虚函数,是一个没有实现只有声明的函数 2)作用 ​ 为了让类具有抽象类的功能,让继承自抽象类的子类都具有虚表以及虚表指针 3)纯虚函数在虚表中的处理 ​ 因为纯虚函数没有实现代码,所以没有首地址。编译器为了防止误调用纯
22
0
0
继承和多重继承
摘要:一、继承的基本概念 ​ 继承:子类继承父类的属性和行为 ​ 作用:代码复用 继承分类: 1. 按访问属性分为public、private、protected三类 1)public: 父类属性无更改,pubic, private, protected 仍是自己本身(子类成员函数可以访问父类的publi
161
0
0
虚函数(涉及汇编原理)
摘要:虚函数 1. 多态 ​ 对象的多态性需要通过虚表和虚表指针来完成 2. 虚表指针 1)位置 ​ 定义在对象首地址的前4字节处(32位)或前8个字节(64位)处 2)定义 ​ 一个二维指针,一个存储一个或多个虚函数地址的数组的数组名,类中的隐藏数据成员 3)初始化 ​ 通过编译器在构造函数内插入代码来
85
0
0
析构函数和构造函数的特点(在汇编中如何识别构造和析构)
摘要:1. 构造函数 1.1 概念 ​ 常用来完成对象生成时的数据初始化工作,支持函数重载,不可定义返回值,返回值为对象首地址,即this指针 拷贝构造函数:参数为对象地址,返回值为this指针 1.2 构造函数的调用时机 1.2.1 局部对象 在汇编里,关于局部对象的构造函数的识别的充分条件和必要条件
112
0
0
对象(探讨对象不适合作为参数和返回值,对象的指针可以的原因)
摘要:对象 ​ 类的一个实例化。对象中的成员定义从低地址到高地址 1. 对象作为函数参数 ​ 对象传参时先将对象中的所有数据进行备份(复制),将复制的数据作为形参传递到调用函数中使用 隐患:拷贝数据中有申请的内存空间,浅拷贝只会拷贝地址不会拷贝数据,在调用函数中会调用一次析构函数释放复制出来的临时对象,在
25
0
0
摘要:class 1. 概念 ​ 一组具有相同属性和行为的对象的集合,体现了面向对象的抽象和封装的两个特点 2. 语法: typedef class _MyClass_{ }; 3. C++四大特性 抽象:数据抽象,过程抽象,只关注目标有什么特点,不在意具体实现 封装:即隐藏对象的属性和实现细节,仅对外公
28
0
0
new和malloc的区别
摘要:从表层调用来看: 1. 名称/语法 一个是操作符,一个是调用函数(cdecl) int *v1 = new int;//无需指定内存块的大小 int *v2 = (int*)malloc(sizeof(int));//需显式指出内存块的大小 delete v1; free(v1); 2. 申请内存
70
0
0
[3] 以逆向的角度来看循环语句——do、while、for的比较
摘要:[3] 以逆向的角度来看循环语句——do、while、for的比较 1. do循环 ​ 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, char* argv[]) { int sum = 0; int i = 0; do { sum += i;
44
0
0
[2] 以逆向的角度来看流程控制语句——switch
摘要:[2] 以逆向的角度来看流程控制语句——switch 1. switch分支数小于4 汇编标识: 00401021 mov [ebp-4], ecx 00401024 cmp dword ptr [ebp-4], 1 00401028 jz short loc_401038 ;如果n==1,跳转到c
71
0
0
[1] 以逆向的角度来看流程控制语句——if
摘要:[1] 以逆向的角度来看流程控制语句——if 1. if语句(单分支) ​ if语句转换的条件跳转指令与if语句的判断结果是相反的, 因为C语言是根据代码行的位置决定编译后二进制代码地址高低的,即低行数对应低地址,高行数对应高地址 ​ 汇编标识: 00401003 cmp dword ptr [eb
39
0
0
引用
摘要:引用 1. 概念 ​ C++为了简化操作,对指针的操作进行了封装,产生了引用类型。引用类型实际上就是指针类型,只不过用于存放地址的内存空间对使用者而言是隐藏的。由于语法限制,导致在输出v2的时候,默认编译器有一个取*的操作,所以输出为值 2. 语法 int v1=10; int &v2=v1; in
38
0
0
指针(涉及一些底层知识)
摘要:指针 1. 指针种类 *一维指针 **(multiply)二维或多维指针 [*]指针数组 (*)[]数组指针 lpfn函数指针 void*指针函数 2. 一维指针 2.1 概念 ​ 用来存放内存地址的变量 2.2 用途 2.2.1 访问内存 ​ 所有数据类型都有相应的指针 char wchar in
55
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起