【C++】图解类和对象(上)

类和对象(上)



一、面向过程和面向对象初步认识

C语言和C++两种语言最大的不同就在于C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。而C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完
成。(注意:C++并不是纯面向对象,Java是纯面向对象,由于C++需要兼容C语言,所以C++可以面向对象和过程混编


在这里插入图片描述


二、类的引入

C++兼容C语言,所以兼容struct结构体语法,C++同时把 struct 升级成了 类


三、类的定义

1.小函数,想成为inline,直接在类里面定义即可;2.如果是大函数,应该声明和定义分离

在这里插入图片描述


四、类的访问限定符及封装

1.访问限定符

访问限定符说明:

  1. public修饰的成员在类外可以直接被访问,也能在类里面访问
  2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的),只能在类里面访问(protected和private后面讲到继承以后才会有区别)
  3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
  4. class的默认访问权限为private,struct为public(因为struct要兼容C)
    注意:访问限定符只能编译时有用,当数据映射到内存后,没有任何访问限定符上的区别

2.封装

封装:将数据和操作数据的方法进行有机结合,隐藏(成员变量 private/ protected)对象的属性和实现细节,仅对外公开接口(开放用成员函数 public)来和对象进行交互。封装的本质上是一种管理~
在这里插入图片描述


五、类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 ::
作用域操作符指明成员属于哪个类域。
在这里插入图片描述


类中开空间就是定义,不开空间就是声明;所谓类就相当于一个图纸只在实例化对象的时候才是开辟空间
在这里插入图片描述


六、类的实例化

用类类型创建对象的过程,称为类的实例化。类只是一个设计图纸,类实例化出对象是图纸建的房子!
在这里插入图片描述


七、类对象模型

类对象的存储方式:只保存成员变量,成员函数存放在公共的代码段
在这里插入图片描述


结论 :一个类的大小,实际就是该类中”成员变量”之和,当然要注意内存对齐
结构体内存对齐可以参考 : 结构体内存对齐详解
另外:没有成员变量的类对象,给1byte,占位不存储实际数据,标识对象存在


八、this指针

在这里插入图片描述


有了 this指针,代码就会被优化成以下 :
在这里插入图片描述


this 指针存在哪里?
存在栈,因为他是一个形参!
vs下面传递this指针,是通过exc寄存器传递的,这样this访问变量提高效率


面试题:下面程序编译运行结果是?A .编译报错; B.运行崩溃; C.正常运行!
在这里插入图片描述


在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍类和对象上的内容(附图解)。
如果我的博客对你有所帮助记得三连支持一下,感谢大家的支持!
在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值