类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。他们的关系是,对象是类的实例,类是对象的模板。对象是通过new class name产生的,用来调用类的方法、类的构造方法。
一、面向过程
面向对象思想OOP
二、类中六个默认的成员方法
设计者提供,系统不提供
设计者不提供,系统会自动提出一个默认函数
系统给出的函数:公有的 , 内联的
1.构造函数
a.每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。
b.构造函数的任务是初始化类和对象的数据成员(赋资源),无论何时只要类的对象被创建,就会执行构造函数。
c.构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型。
d.构造函数有一个(可能为空的)参数列表和一个(可能为空的)函数体。
e.类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区别,构造函数是可以重载的,不可以手动调用。(生而不同)
f.构造函数不能被声明成const的,当我们创建类的一个const对象时,直到构造函数完成初始化过程,对象才能真正取得其“常量”属性。因此,构造函数在const对象的构造过程中可以向其写值。
g.开辟对象所需的内存空间,给开辟的内存进行初始化,调用构造函数(在对象生成点),调用默认构造函数时不需加()。
2.析构函数
a.析构函数与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。清理资源,清理空间(销毁时,调用析构函数,清理内存)
b.析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~CGoods(),用来和构造函数相区别。
c.析构函数不能带任何参数,也没有返回值(包括void类型)
d.先构造的后析构,析构不可重载,可直接自己调用,析构函数一旦调用就成普通函数。
3.拷贝构造函数
a.拿一个已经存在的对象生成一个相同类型的新对象。
b.默认的拷贝构造函数是浅拷贝,自己可以实现深拷贝
c.拷贝构造函数其形参必须是引用,但并不限制为const,一般普遍的会加上const限制
d.两个对象共用一块堆内存,每个对象释放一次,第二次释放时,该地址已不存在,崩溃
e.下列三种对象会用到拷贝构造函数:
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化);
4.赋值运算符的重载函数
a.关键字+他要重载的运算符,把一个已存在的对象赋值给了一个相同类型的已存在的类型
b.返回值为空,为了连续赋值,返回值返回*this
c.C++规定,赋值运算符重载函数只能是类的非静态的成员函数,不能是静态成员函数,也不能是友元函数
d.形参const的作用:1.防止形参被修改 2.接收隐式生成的临时量
5.取地址操作符的重载函数
6.const修饰的取地址操作符的重载函数