zoukankan      html  css  js  c++  java
  • 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; } 
    
  • 相关阅读:
    python---函数补充(变量传递),语句执行顺序(入栈顺序)
    python---基础知识回顾(十)进程和线程(多线程)
    python---方法解析顺序MRO(Method Resolution Order)<以及解决类中super方法>
    FindMe
    Android Studio系列教程五--Gradle命令详解与导入第三方包
    Material Design
    asmack
    AlarmDemo-with-Database
    ZhuGongpu CloudX-for-Android
    SaundProgressBar
  • 原文地址:https://www.cnblogs.com/P3nguin/p/7501007.html
Copyright © 2011-2022 走看看