C++类本质

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<windows.h>
#include<stdio.h>

class Test
{
public:
int a;
int b;
int add()
{
return a + b;
}
int sub()
{
return a - b;
}
int mul()
{
return a * b;
}
int div()
{
return a / b;
}

Test()
{
}

Test(int a,int b)
{
this->a = a;
this->b = b;
}

~Test()
{
this->a = 0;
this->b = 0;
}
};

class SubTest:Test
{
public:
int c;
int d;

SubTest(int a, int b, int c, int d)
{
this->a = a;
this->b = b;
this->c = c;
this->d = d;
}
};

int main()
{
//Test t(1,2);
SubTest t(1,2,3,4);
//t.add();
return 0;
}

/*

类实例化出来的对象一般在创建它的函数栈帧的缓冲区(ebp-4,ebp-8,ebp-C)中
调用成员方法(包括构造器)时会先将参数PUSH进栈再lea ecx,对象地址(一般为该层函数栈缓冲区ebp-8中);这叫做__thiscall(内平栈,从右到左堆栈传参(32位),最后传对象指针(this指针,通过ecx传,保存在成员函数栈缓冲区ebp-8处))

*/

C++类本质
https://rogxo.github.io/2021/12/01/2021-12-01-C++类本质/
作者
Rogxo
发布于
2021年12月1日
许可协议
CC BY-NC-SA 4.0