类对象作为类成员;静态成员;对象模型和this指针、空指针访问成员函数、const修饰成员函数

C++类中的成员可以是另一个类的对象,我们称为对象成员 

B类中有对象A作为成员,A为对象成员。

当其他类对象作为本类成员,构造时候先构造类对象,在构造自身,

析构的顺序与构造的相反;

静态成员

静态成员就是在成员变量和成员函数前加上关键字Static,称为静态成员

静态成员分为:

静态成员变量

        编译器报错(无法解析的外部命令)为链接阶段出现的错误

  • 所有对象共享同一份数据
  • 编译阶段分配内存(程序运行之前 有代码和全局区(数据区),全局区)
  • 类内声明,类外初始化

 

 

静态成员变量也是有访问权限的; 

静态成员变量的访问方式:

通过对象,通过类名;

静态成员函数

  • 所有对象共享同一个函数
  • 静态成员函数只能访问静态成员变量

         静态成员函数变量也是有访问权限的; 

访问方式:

C++对象模型和this指针

成员变量和成员函数分开储存;

静态成员变量和非静态成员函数都不属于类对象上,

只有非静态成员变量才属于类对象上;

空对象占用内存空间为一个字节;

C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占用的位置;
每个空对象也应该有一个独一无二的内存地址; 

this指针

this指针概念

每一个非静态成员函数只会生成一份函数实例,也就是说多个同类型的对象会共用一块代码

this指针指向 被调用的成员函数 所属的对象(那个对象调用this指针就指向谁)

this指针是隐含在每一个非静态成员函数内的一种指针

this指针不需要定义,直接使用即可

this指针的用途:

1、当形参和成员变量同名时,可以用this指针来区分;(解决名称冲突)

2、在类的非静态成员函数中返回对象本身,可以使用:return *this

返回的是值 则会创建一个新的对象进行返回,而返回的是一个地址的话则是不会。  

 

空指针访问成员函数

C++中允许空指针调用成员函数,但要注意有没有用到this指针

如果用到了tish指针,则要判断保证代码的健壮性;

 

const修饰成员函数

常函数:

在成员函数后面加上 const 我们称这个成员函数为常函数;

常函数内不可以修改成员属性

成员属性声明时加关键字 mutable后 在常函数中依然可以修改

常对象:

声明对象前加上const 称该对象为常对象;

常对象只能调用常函数;

函数中不管有没有属性,都会存在一个this指针

而this指针的本质是一个指针常量 指针的指向是不可以修改的;

Person const *this;

在函数后加上const则: 指针的指向 跟 指针的值 都不允许修改;

const Person*const this‘

 用mutable关键字,即使在常函数里,也可以修改这个值。 

 常对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值