c++之类

2020-03-04  本文已影响0人  全村的卡密

struct和class都可以用来创建类

区别在于:

c++编程规范

image.png

bew出来的被分配在堆中,需要手动清空内存。

内存布局

class Person{
pubic:
int m_id;
int m_age;
int m_hegiht;
//连续按照定义顺序排列
}
image.png

类是如何调用函数并且知道调用该函数的是哪个类

假如有person1和person2两个类,编译器如何知道调用类中的函数时,是person1调用的还是person2调用的?
c++中定义了this指针。

image.png
ecx存储的是 person1的地址值。然后调用成员函数。
image.png

[ebp-8]是this指针的地址,将person1的地址值存放在this指针中。
然后将this指针的值存放在eax寄存器中,将3写入eax寄存器。
完整汇编段:

image.png
image.png
this可以省略

用指针和对象直接访问的区别

image.png image.png 知识提要

开辟栈空间,为了清理之前的垃圾数据,会全部填充0xcch,也就是汇编指令int3(断点)。

上一篇 下一篇

猜你喜欢

热点阅读