从零开始学C++06--对象成员

对象成员

定义

类中的成员可以是另一个类的对象,我们称该成员是对象成员
在这里插入图片描述
此时A为对象成员
在这里插入图片描述

在这里插入图片描述

静态成员

在这里插入图片描述

特点

重点:所有对象都共享同一份数据
编译阶段就分配内存,在全局区
类内生命,类外初始化操作

访问方式

1、通过对象进行访问
2、通过类名进行访问

在这里插入图片描述

注意
静态成员变量也是有访问权限的,私有权限,类外就访问不到了

静态成员函数

访问方式

对象访问,类名访问

在这里插入图片描述
静态成员函数也是有访问权限的,如果在类中有private的静态函数,那么在类外是访问不到这个静态函数的

成员变量和成员函数

当类里面是空的时候,生成了一个对象的话,已经会占一个字节,因为编译器hi对每个空对象也分配一个字节空间,是为了区分空对象占内存的位置。每个空对象也会有一个独一无二的内存地址
如果类里面声明了静态变量,那么这个变量不属于类对象上,所以生成的字节就是除静态变量以外的字节数

如果里面有函数的话,也不影响类所占用的字节数,因为成员函数又是存在另一个区域

在这里插入图片描述
在这里插入图片描述

this指针

每个非静态成员函数只会诞生一份函数实例,多个同类型代码共用一块代码,但是这块代码如何区别哪个对象调用的呢?
this指针指向被调用的成员函数所属的对象
this指针是隐含在每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用即可

用途

当形参和成员变量同名时,可以用this指针来区分
在类的非静态成员函数中返回对象本身,可使用return *this,因为this终究是个指针,*this就是解引用的过程
1、名称冲突
用this来解决,谁调用的有参构造,this就指向谁
在这里插入图片描述
2、返回对象本身用 *this
在这里插入图片描述
class Person{
在这里插入图片描述
}
这里person后面必须引用,因为这样的话,就是改的都一样
如果不加引用,那么就相当于一个拷贝函数,拷贝函数返回的是拷贝后的那个对象

空指针访问成员函数

这样写会崩的,因为p并没有生成一个对象,仅仅是一个空指针,然而又让一个空的东西指向它里面的年龄。显然不现实,所以会报错,更改方式就是在上面一个函数上面写一个this 是否为NULL的判断语句,如果为空的话,直接return;即可
在这里插入图片描述

const修饰成员函数、

常函数

在成员函数后头加的const,是修饰this的指向,这让指针指向的值不可以修改,想要修改就要在变量生命时候,加关键字
在这里插入图片描述
在这里插入图片描述

常对象

在这里插入图片描述
常对象不可以调用普通成员函数,因为普通成员函数可以修改属性

总结

在这里插入图片描述

友元

意义

让一个函数或者类,能够访问一个类中私有成员

关键字

friend

实现

全局函数做友元
类做友元
成员函数做友元
类做友元:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

new building是因为初始化的是building的指针

成员函数做友元

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值