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<<"构造函数被调用"<<endl;
}
dragon::dragon(char Sex, int Grade, int Exp, int Power, int Fight, int Win)
{ sex=‘M’; grade=1; exp=0;
power=100; fight=10; win=0;
set_id();
cout<<"默认构造函数被调用"<<endl;
}
int main()
{ //使用构造函数,创建宠物对象blue_d并初始化
dragon blue_d('f',5,1300,400,30,29);
//使用默认构造函数
dragon red_d;
}
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<<“析构函数被调用"<<endl;
}
- 如果类说明中没有给出构造函数,则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; }