关于C++this指针

本文章主要是对this指针的讨论

1、this指针所占的内存

总所周知,指针类型在C++/C中占据的内存是四个字节,那么this作为一个指针,是否也是占用四个字节呢,此时定义一个类对象有一个int类型的值,如果this指针也占据类内的空间,那么sizeof(class)就是8,但是如果去写的话就会发现,此时类的size是4,所以this指针是不占据类对象的内存的

2、this指针的指向

那么肯定会好奇,this作为一个指针,他到底的指向是什么呢,哈哈,其实大家应该都知道,指向的肯定是当前类的空间,不然怎么去访问类内的成员呢。但是此时需要注意,this指针不是额外开辟的一块空间去指向类内的对象,而是和当前类对象是一个地址。例如当前实例化一个类对象为Student s,此时在类内部调用一个函数cout<

3、在静态成员方法中不能使用this指针 

其实这个很好理解,就像上面说的,this指针会在成员方法定义的时候作为参数传入方法中,而类对象可以不需要实例化直接访问静态成员方法,即Student::fun();。如果此时需要传入指针的话,那么传入的是什么指针呢?所以这里就有矛盾,故静态成员方法不可以使用this指针

 4、为什么设计this指针

我个人认为是在函数使用的时候更好的去区分传入的变量以及返回自身,就像std::的命名空间一样,万一传入成员方法的参数和类中的属性重复了,那么就会报错,此时就需要用this指针来指向当前的属性来进行区分,还有就是看网上说的C++对象模型这本书说的比较清楚,如果有想了解的话可以去深入

 以上想法仅限个人,如果大家有更好的思路以及想法,需要改错纠正,欢迎大家指正交流,谢谢大家

你可能感兴趣的:(c++,jvm,数据结构)