C++编程之内存模型
C++程序在执行时,将内存大方向划分为四个区域
- 代码区:存放函数体的二进制代码,由操作系统进行管理的
- 全局区:存放全局变量、静态变量和常量
- 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等
- 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统收回
this指针概念
- this指针指向被调用的成员函数所属对象
用途:
2. 解决名称冲突
3. 返回对象本身用 *this 实现链式编程
Person& add()
{
return *this;
}
空指针访问成员函数
空指针访问成员函数,成员函数中不可以出现this指针
const修饰成员函数
- 成员函数后加const 称为常函数 常函数内部不可以修改属性的值 特殊情况加 mutable
- 对象前加const 称为常对象 不可以修改属性的值 特殊情况 加 mutable 常对象只能调用常函数
友元
在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术
友元的关键字:friend
友元的三种实现:
- 全局函数做友元
- 类做友元
- 成员函数做友元