类
1.定义
特点:抽象、封装、继承、多态
2.封装
class Name
{
public:
//类的继承者、类里、类对象 可以访问
Name();//构造
~Name();//拷贝
Name(Name &name);//析构
protected:
//类的继承者、类里 可以访问
private:
//类里可以访问
public:
//类成员
};
3.类函数
1.构造函数
1.作用:类成员的初始化
2.例子
- Name()
- Name(int x, int y)
3.注意:声明了带参数的构造函数 Name(int x)
- Name n = Name() 错误
- Name n = Name(2) 正确
2.析构函数
1.作用:对象删除前清理工作
2.例子
- ~Name(){ 释放此类里用到的对象 }
3.注意:记得释放 new alloc申请内存空间
3.拷贝构造函数
1.作用:复制一份对象
2.例子
- Name(Name &n) 对象的引用
3.注意:
- 浅拷贝类成员中有指针的或地址的不行
- 深拷贝指针和地址的成员也拷贝一份
4.调用:
- 一个类对象初始化该类另一个对象
Name n1(1); Name n2(n1)
- 形参是类的对象,形参和实参结合时
void fuc(Name n){} Name n; fuc(n);
- 函数返回值是类的对象
Name func()
{
return Name(1, 2)
}
Name n;
n = func()
4.共同点
构造函数、拷贝构造函数、析构函数 每个类默认都有
拷贝构造函数:拷贝一个对象时候不是完全拷贝,有些地方可能要有小的修改。
4.类的组合
1.类里有类
2.对该类进行拷贝时也要拷贝类里的其他对象
P109
5.向前引用声明
只是标示是一个类,并没有实际意义
class A;
class B
{
public:
A a;//错误,声明要开辟内存空间
A *a;//正确,只是开辟指针空间
a->add(2, 3);//错误不能使用
};