回想一下面向对象的常见知识点
◼类
◼对象
◼ 成员变量、成员函数 ◼ 封装、继承、多态
◼ .....
类
◼ C++中可以使用struct、class来定义一个类
◼ struct和class的区别
struct的默认成员权限是public
class的默认成员权限是private
image.png
◼ 上面代码中person对象、pPerson指针的内存都是在函数的栈空间,自动分配和回收的
◼ 可以尝试反汇编struct和class,看看是否有其他区别
◼ 实际开发中,用class表示类比较多
C++编程规范
◼ 每个人都可以有自己的编程规范,没有统一的标准,没有标准答案,没有最好的编程规范
◼ 变量名规范参考
全局变量:g_
成员变量:m_
静态变量:s_
常量:c_
使用驼峰标识
对象的内存布局
◼ 思考:如果类中有多个成员变量,对象的内存又是如何布局的?
image.png
指针访问对象成员的本质
image.png◼答案:10 40 50
this
◼ this是指向当前对象的指针
◼ 对象在调用成员函数的时候,会自动传入当前对象的内存地址
image.png
思考
◼ 可以利用this.m_age来访问成员变量么? 不可以,因为this是指针,必须用this->m_age
封装
◼ 成员变量私有化,提供公共的getter和setter给外界去访问成员变量
image.png
内存空间的布局
◼ 每个应用都有自己独立的内存空间,其内存空间一般都有以下几大区域
代码段(代码区)
✓ 用于存放代码
数据段(全局区)
✓ 用于存放全局变量等
栈空间
✓ 每调用一个函数就会给它分配一段连续的栈空间,等函数调用完毕后会自动回收这段栈空间
✓ 自动分配和回收
堆空间
✓ 需要主动去申请和释放
image.png
网友评论