c++ 类与对象

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; } 
原文地址:https://www.cnblogs.com/P3nguin/p/7501007.html