面向对象的特性:封装,继承,多态
C++ 中class 与 struct 的区别:
class与struct的主要区别在于默认的访问权限与继承方式,class中默认访问权限是private,struct中是public.继承方面class默认私有继承,struct公有继承。
this指针
在说this指针之前先讲一下类的内存分布。在C++中类的方法和成员是分开存储的。只有非静态成员变量存储在类中。其余的所有成员都不在类中。这是因为成员变量是对象的一部分。成员函数则不是,因此成员变量需要存储到对象中,而成员函数则不需要。具体来说,每个对象都有一份成员变量。所有对象共享一份成员函数。这就是为什么静态成员函数不能访问非静态成员变量的原因。在编译阶段会向每一个成员函数添加一个函数参数this指针。这个指向对象本身。
问题一:this指针占用类内存嘛?
this指针不属于类的成员,只是成员函数的参数,所以不占用大小。
问题二:this是什么,*this呢?
每一个对象的地址,*this该对象本身。
问题三:静态成员函数为什么不能操作this指针。
静态成员函数不属于任何具体的对象,它属于整个类,所以在静态成员函数里面,不会存在this指针,当然也不可能操作this指针。