1类:一类事物的抽象(模板)
定义: class 类名
{
//方法
//属性
};
2、实例化对象:构造器分配空间并初始化
3、析构器:一个类对象需要作善后处理。
什么时候来执行:当类对象被释放时,系统会通知对象(发送释放消息)。
~类名() ;//不带形参
注:1、只有一种析构器(不能重载 )
2、默认添加析构函数(空函数体)
3、堆区必须由delete来释放,否则不会被析构
4、友元
1、友元函数:就是全局函数作为类的朋友
作用:友元函数可以访问该类的非公有成员
class 类名
{
//声明
friend 返回类型 函数名(...)
};
返回类型 函数名(...)
{
}
2、友元类:若类A需要去访问类B的非公成员,则A声明为B的友元类,那么A就
访问类B的非公有成员
class B
{
...
friend class A;
private:
...
};
class A
{
//访问B的成员
...
B b;
}
注:友元会破坏封装性。
5、重载运算符: 将运算重载为可以对复杂类型进行运算。
运算符:就是提供运算操作,
运算表达式:运算的结果
1、运算符的数据可以对基本类型进行运算。
定义: 返回类型 operator运算符(形参);
1、算术运算符:
1、全局函数
返回值 operator运算符(形参1,形参2)
2、成员方法
friend 返回值 operator运算符(形参1)
2、判断运算符: > < != >= <= ==
结果: 真 假
1、成员方法:
2、全局函数:
3、下标运算符 []
1、成员方法:
4、 重载输入输出流:
输出:<<
输入:>>
两个标准输出输出流:cout/cin分别是类ostream/istream的对象
重载:
1全局函数
void operator<<(ostream&,对象);
2、不能为成员方法
注:1、下列运算符不能重载:
sizeof 对象->成员 new * & 对象.成员
2、规定:对复杂类型重载运算符的结果类型必须保持与运算的表达式结果一致。
3、语法规则:运算符的操作数目不能改变
4、自增/自减:
1、全局函数
类 operator++(类); 前自增
类 operator++(类,int)
2成员方法
类 operator++() //前自增
类 operator++(int)
4、数据区间:
1、动态区:当函数被调用时,动态变量(在函数内定义的非staic变量)会被分配空间
注:栈区变量(所有动态空间存储在栈区)
2、静态区:在程序运行时主分配空间(全局,static)
3、堆区:由malloc/new来分配的空间,只能由free/delete来释放