1、类的定义
class 类名{ private: 成员表1; public: 成员表2; protected: 成员表3;};//类体,以分号结束
private&protected 成员不能从外部进行访问
public 成员可以从外部进行访问
例如:
class dragon{ int grade;//等级 int exp;//经验值 int power;//武力值 int fight;//战斗次数 int win;//战胜次数 long id;//系统编号,身份序列号 public: void set_id();//赋予身份序列号 void train();//训练,增加经验值、武力值 void upgrade();//宠物升级 void pk(dragon &ob);//一对一战斗};
如果在类体起始点无访问说明符,系统默认为私有(private)
2、成员函数的定义
通常在类的定义中,成员函数仅作说明,函数定义通常在类的说明之后进行,格式如下:
返回值类型 类名::函数名(参数表){ ...... //函数体}
void dragon::upgrade() { if (win>=10) {grade++; win=win-10;}}
3、类成员的访问
- 类外访问
类外函数-->类中public属性的成员
使用 “对象名.成员名” 方式访问
- 类中成员互访
成员函数-->任意类中成员
直接使用 “成员名”
4、构造函数
构造函数的作用:创建对象 初始化对象
对象的赋值:为对象的数据成员赋值
对象的初始化:在对象创建时为对象的数据成员赋值
class dragon{ char sex;//性别 int grade;//等级 int exp;//经验值 int power;//武力值 int fight;//战斗次数 int win;//战胜次数 long id;//身份号 public: dragon( char Sex, int Grade, int Exp, int Power,int Fight, int Win ); //构造函数声明 dragon(); //默认构造函数声明 …………};
构造函数是公有成员函数;
构造函数函数名与类名相同;
构造函数无函数返回类型说明。
//构造函数定义dragon::dragon(char Sex, int Grade, int Exp, int Power, int Fight, int Win){ sex=Sex; grade=Grade; exp=Exp; power=Power; fight=Fight; win=Win; set_id(); cout<<"构造函数被调用"<
5、析构函数
class dragon{ ……. public: dragon( char Sex=‘f’, int Grade=1, int Exp=0, int Power=0, int Fight=0, int Win=0 ); ~dragon( ) ; };//析构函数定义dragon::~dragon( ){ cout<<“析构函数被调用"<
- 如果类说明中没有给出构造函数,则C++编译器自动给出一个默认的构造函数:类名( ){ }
- 若没有给出析构函数,也会给出一个默认的析构函数:~类名( ){ }
6、类的聚合
用其他类的对象作为类的数据成员。
class Point{ public: Point(int xx=0,int yy=0){X=xx; Y=yy;} Point(Point &p) { X=p.X; Y=p.Y;} //复制构造函数 ~Point( ){ } int GetX() {return X;} //取对象的X坐标 int GetY() {return Y;} //取对象的Y坐标 private: int X,Y; //点的坐标};class Line //Line类的声明{ private: //私有数据成员 Point p1,p2; //Point类的对象p1,p2 int style; //线型 public: //使用坐标的构造函数 Line (int x1=0, int y1=0,int x2=0,int y2=0, int Ls=0); //使用点对象的构造函数 Line (Point a, Point b, int Ls=0); …………};
含对象成员的构造函数的定义
类的对象成员必须使用初始化列表初始化
类名::类名(对象成员所需的形参,普通数据形参):对象1(参数),对象2(参数),...
{ 本类初始化 }
Line::Line(Point a, Point b, int Ls):p1(a),p2(b){ style=Ls; } Line::Line( int x1,int y1, int x2,int y2, int Ls):p1(x1,y1),p2(x2,y2){ style=Ls; }