四区:
代码区:存放二进制置零
全局区:存放全局变量和静态变量以及常量
栈区:存放局部变量以及参量,由编译器自动释放
堆区:由程序员释放,或者操作系统收回
程序运行前:
代码区:共享,可读
全局区
栈区:不要返回局部变量的地址
堆区:堆区由程序员开辟和释放,堆区用new关键字进行开辟内存。
new 数据类型(记得释放内存)
在堆区创建整型数据
new 返回的是该数据类型的指针
引用:给变量起别名
引用必须初始化
引用在初始化后,不可以改变(引用的本质是指针常量)
引用传参
可以利用引用技术让形参修饰实参
可以简化指针修改实参
常量引用
常量引用主要来修饰形参,防止误操作
函数默认参数
形参列表是可以有默认值的
- 若果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都有默认值。
- 如果函数声明有默认值,那么函数实现就不能有默认参数。
函数重载
函数名可以相同,提高复用性
函数重载满足条件:
同一个作用域下
函数名称相同
函数参数类型不同,或者个数不同,或者顺序不同
注意:函数返回值不可以作为函数重载条件
类和对象
三大特性:封装,继承,多态
封装的意义:将属性和行为作为一个整体,表现生活中的事务
将属性和行为加以权限控制
对象的初始化和清理
编译器提供的构造函数和析构函数是空实现
构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用
析构函数:主要在对象销毁前系统自动调用,执行清理工作。
构造函数语法: 类名(){}
- 构造函数,无返回值也不写void
- 函数名与类名相同
- 构造函数可以有参数,因此可以发生重载
- 程序在调用对象时自动调用构造,无需手动调用且只调用一次。
析构函数: ~类名(){}
析构函数不可以有参数,因此不可以发生重载