1、类:用来封装数据的(数据(变量)+行为(函数))
2、类型定义不占数据内存
3、类定义分为两个部分:类说明和类实现两个部分
class Cstu//类说明
{
int a;//类实现
private:
void seta(int
a);//类实现:定义这个类类型里面的行为,是怎么样的操作 访问类里面的数据叫接口
void geta(){};
};
类中成员函数的定义叫类实现
1、在类中定义
2、在类外定义
void Cstu::seta(int
a)//类外实现类内函数
{
this->a=a;
}
4、类说明:定义一个类类型,告诉程序这个类型有什么样的数据,有什么样的行为
5、类实现:定义这个类类型里面的行为,是怎么样的操作
自己的只能自己用。 类里面的函数就是(接口为数据参数的函数)其他的都是行为
6、类名大写的C开始,表示一个C++的类; 类说明 :class
Cstu{int id;};
7、类的三种访问属性 public(共有) private(私有)
protected(保护)
8、这三种访问属性可以任意的出现在类的说明当中,不限次数,不限位置。每一个访问属性所修饰的区间是从当前属性开始到下一个属性结束(类末尾)
9、类默认是私有属性,只有类中的成员函数才能使用类中的私有数据(private)
10、类中公有的行为及数据可以在程序中被任何函数或语句所调用
11、类中的保护部分是不能在类外被调用的,只有类的子类可以调用(知道就可以了)
12、定义类时,当未指明成员是哪个属性,默认是私有
13、类的定义时,结尾加;
类中通过构造和析构来创建和释放对象
构造:内存从无到有 就可以借助这个过程来完成对象的初始化
析构:内存从有到无
借助这个过程来完成对象的清理(对对象里面所申请的堆区内存进行释放)
二、对象
对象的初始化:
1、直接赋值 (所有数据成员必须是公有,且没有声明任何的构造函数)
2、公有的初始化函数
参看initA函数
函数是一个成员,这个成员可以在任何时间,任何地点被调用
3、构造函数
C++在类的说明中可以包含一个或多个特殊的公有函数成员-构造函数
特性:
1、函数名与类名相同
2、没有函数返回值类型,也没有返回值
3、一个新的对象被建立时,该对象的构造函数会自动地被调用,对这个对象进行初始化工作
4、新对象的建立包括两种情况,CA
a(对象说明语句);CA *pa = new
CA(对象指针指向动态开辟的堆区无名对象);
5、如果一个类说明中没有显式的给出构造,系统将自动地给出一个缺省的(隐式)什么都不干构造函数,<类名>(){};
6、如果说明中包括多个构造函数,一般会有不同的参数列表和函数体
4、析构函数
特性:
1、函数名与类名相同,在前面加上一个~ ~<类名>() {}
2、没有函数返回值类型,也没有返回值,也没有参数
3、当对象出了他的作用域时,系统会自动调用析构函数
4、析构函数的作用一般是用于给对象里面在堆区申请的内存释放
5、一个类只有一个析构函数
6、如果一个类中没有显示的给出析构,析构将会自动给出一个(隐式)什么都不干的析构 ~<类名>() {}
this指针,C++的保留字,它是一个指针,在任何一个类成员函数的运行过程,这个this指针总是指向调用者对象
*this
表示当前调用者对象
this->成员名((*this).成员名) 表示当前调用者的某个成员
return this;
来返回当前调用者对象的首地址
return *this; 来返回当前调用者对象
类名 * const this;
指向类的对象 ,当对象创建之后,成员函数调用时,this就被说明和创建