类的声明
Class 类名
{
Private:
私有数据和成员函数;
Public:
公有成员和函数;
};
对象的声明:有3种方式,选择一种稳妥的
类名 对象名;
类成员函数的定义:可以在类定义体内定义,用大括号括起来;也可以在类体外定义,内部只做声明;
在外部定义要用作用域限定符 ::目的是规避同名函数
格式为 返回值类型 类名::函数名(参数表){}
内置成员函数:内联函数;编译时直接将函数代码编译在程序中,这样可以省去调用函数的开销,提高程序效率。关键字 inline function_declaration;
类的成员函数的存储方式:函数存于对象空间之外,同类的对象采用调用的方式访问函数。这样可以节省大量对象创建时的空间。计算对象占用的字节数,要忽略函数,无论是在类内还是类外定义,也不管是不是内联函数,都不占用对象的存储空间。
类内部权限设定:只允许本对象中成员的函数访问同一对象中的私有数据。类(对象)外只能通过调用public成员函数来引用或修改私有数据成员。由此实现接口与实现分离的思想。
对象成员的引用:三种方式,1用 对象名.成员名 2用类的指针获取对象地址,然后用指针加箭头的形式 指针名—>成员名 3 定义类引用 类名 &引用名;使用时 引用名.成员名
类的初始化:使用构造函数,不能像C中对结构体或者变量赋值那样赋值,因为类是一个抽象概念,并不占用存储空间。私有成员必须经过成员函数初始化。构造函数是一个与类同名的公有函数。这个构造函数在类建立对象时会自动调用也只能自动调用,而且没有返回类型。
构造函数带参数要在类外进行定义,类内声明可以不给形参取名字,构造函数名(类型名,类型名,...,类型名) 定义 类名::构造函数名(类型名 变量名,...,类型名 变量名){...}
声明对象 类名 对象名(变量1,...,变量n)参数初始化表 构造函数名(参数表):成员名(参数名),...,成员名(参数名){}
构造函数可以重载 :改变构造函数参数个数或者类型
构造函数使用默认值:在声明时使用默认值 ex. Box(int h=10,int w=10,int len=10);好处是减少输入量;生成对象时,使用默认值的实参可以省略。
复制构造函数:以同类成员作为形参的构造函数
转换构造函数:
析构函数:在对象的生命周期结束后释放掉内存,并执行一些操作,其调用次序符合堆栈操作,先构造后析构。局部变量的存储在堆栈中
静态成员变量
对象数组:对象数组每一个元素都是同类对象,每个元素都要调用构造函数
定义:类名 数组名[元素数]
对象指针:对象空间的起始地址就是对象的指针 数据类型名 *指针变量名;
指向普通函数的指针变量: 类型名 (*指针变量名)(参数列表);
指向类公用成员函数的指针:类型名 (类名::*指针变量名)(参数列表);
为类函数指针赋值: 指针变量名=&类名::成员函数名;
This指针 编译系统自动赋值对象首地址。使得对象间共用的函数代码可以指向具体的对象,实现正确的引用。
常对象:类名 const 对象名[(实参表)] const 类名 对象名[(实参表)]
常成员函数:常对象只能调用其常成员函数,常成员函数不能修改对象数据成员的值
对象动态建立和释放:ex BOX *pt =new BOX(12,15,18); delete pt;
静态成员函数:以static定义的成员函数;静态成员函数用来访问静态数据成员,静态成员函数没有this指针,因此不能访问对象中的非静态成员。调用静态成员函数要用类引用方式
静态数据成员:不能用参数初始化表进行初始化;静态数据成员只能在类体外进行初始化,
静态数据成员初始化:ex. Float Student::sum=0;
友元函数:在类外定义,可以访问私有成员 声明在类的公有成员中进行,ex friend void display(Time&)
友元成员函数:用类引用去声明友元函数 ex friend void Time::dispaly(Date&);
友元类:friend 类名;友元关系是单向的,不可传递的
继承与派生:
Class 派生类名:[继承方式] 基类名 继承方式:public,private,protected
{
派生类新增加成员
};