对this指针指向空间的疑问,以及普通成员函数存储为什么可以由this访问?

来源:8-18 Hack对象模型和虚函数

慕勒0477221

2020-04-23

老师你好,没太明白你所说的普通成员函数通过this指针去访问。
在例子里,shapes[0]的指针指向了栈空间的square类s1变量,一共16个字节,有1个4字节存储了虚函数的虚表指针,1个4字节存储int变量,1个8字节存储了double变量。
不太明白这个this指针的意思,this指针不是指向这个16字节的类变量么,这个类普通成员函数又是存储在什么空间里的呢?是编译时就生成的静态地址么?

写回答

1回答

quickzhao

2020-04-23

你注意我在Hack过程中的ecx值,一般this指针用它来记录,从而能访问类成员信息。

0
2
quickzhao
回复
慕勒0477221
C++是一门细节很繁杂的语言,类的成员函数不占空间,只有成员变量和虚表占空间。我们课程时间没法讲那么细,你感兴趣可以看看《C++对象模型》。
2020-04-23
共2条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程