文章内容如下:
1)成员变量和函数的存储
2)this指针
3)const修饰成员函数
4)有元
一。成员变量和函数的存储
C++实现了封装,数据(-变量)和处理数据的操作(-函数)是分开存储的,C++中的非静态数据成员直接内含在类对象中,成员函数虽然内含在class声明之内,去不出现在对象中,每一个非内联成员函数只会诞生一份函数实例。
从上述图中我们会有一个疑问,共享的成员函数是如何区分哪个对象在调用自己的呢?(this指针)
二。this指针
this指针指向的是被调用的成员函数所属的对象的。this指针是一种隐含指针,他隐含于每个类的非静态成员函数中,this指针无需定义,直接使用即可。
这里最对静态成员函数与非静态成员函数做一下总结:静态成员函数类里声明类外定义,因为属于这个类不属于对象,所以没有实例化对象也能使用,并且只能操作静态成员数据,非静态成员函数如果在类外,也是类里声明,类外定义,通过this指针判断是哪个对象在调用它。
2. this指针的应用
函数形参和成员同名可以使用this指针解决;
this指针来完成链式操作
三。const修饰成员函数
const修饰成员函数,其实是指const修饰this指针指向的内存区域,所以该成员函数体内不可以修改本类中的任何普通成员变量,当成员变量类型前用mutable修饰时除外。
四。有元
有元可以理解为特权的意思,用friend修饰的变量或函数就叫有元变量或友元函数,他可以用来访问另一个类中的私有数据。类的主要特点之一就是数据隐蔽,即类的私有成员无法在类外访问,但是有时候需要在类外访问类的私有成员,这时候就需要有元来操作,有时候我么会将全局函数做有元,有时候会将某个类中的成员函数做有元,有的会将整个类声明为有元。
需要注意的是,friend只出现在声明处。有元主要用在运算符重载上。
需要注意的是有元不能被继承,有元不具有传递性。