C++ 从入门到放弃 (Day-04)

回想一下面向对象的常见知识点

◼类
◼对象
◼ 成员变量、成员函数 ◼ 封装、继承、多态
◼ .....

◼ 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

你可能感兴趣的:(C++ 从入门到放弃 (Day-04))