滴水逆向——C++_this指针
1、直接使用结构体做为参数\传递结构体指针
2、空结构体的大小为1
3、函数可以放在结构体里面,也可以放在结构体外面
struct sclass
{
int a;
int b;
int c;
int d;
int Plus(sclass* sc)
{
return sc->a + sc->b;
}
};
探测结构体的大小为:
4、函数放在里面如何使用的问题
struct sclass
{
int a;
int b;
int c;
int d;
int Plus(sclass* sc)
{
return sc->a + sc->b;
}
};
int main(int argc, char* argv[])
{
sclass s;
s.a = 10;
s.b = 20;
int x = s.Plus(&s);
printf("%d %x\n", x, sizeof(s));
return 0;
}
5、封装、类、成员函数
封装:
a.将函数定义到结构体内部,就是封装.
b.编译器会自动传递结构体的指针给函数.
类:
带有函数的结构体,称为类.
成员函数:
结构体里面的函数,称为成员函数.
6、this指针
this指针的特点:
a.你用或者不用,它就在那里
b.参数个数确定的时候,用ecx来传递
c.参数个数不确定的时候,最后一个传递(参见不定长参数)
7、显示使用this指针
this指针的特点:
a.this指针不能做++ --等运算,不能重新被赋值.
b.this指针不占用结构体的宽度.