1.c++对象模型和this指针
(1)成员变量和成员函数分开存储
空对象占用内存空间为1
给空对象也分配一个字节空间,是为了区分空对象占内存的位置
每个空对象也应该有一个独一无二的内存地址
非静态成员变量属于类的对象上
非静态成员函数不属于类的对象上
(2)this指针概念
this指针指向被调用的成员函数所属对象
是隐含每一个非静态成员函数内,不需要定义,直接使用
用途
当形参和成员变量同名时可以用this指针区分//解决名称冲突
在类的非静态成员函数中返回对象本身可以使用return *this
2.友元
(1)全局函数作友元
友元的目的就是让一个函数或者类访问另一个类中的私有成员
关键字 friend
直接把全局函数的函数声明前面加上friend 放到class里面的最前面
(2)类作友元
类外写成员函数
返回值 类名::函数名() //::是域作用符
类做友元 要把类提前声明class P{ };
就是把class 类名整体前面加上friend放到另外的类里面的前面
(3)成员函数作友元
friend 返回值 类名::函数名( );
同样放到另外的类中最前面
友元函数不能直接访问类的成员,只能访问对象成员,
所以在用成员函数的时候,通常要用类的对象的引用,做出具体的对象