对象

定义:客观存在的实体
组成:
1.静态特征(属性),一般用数据实现,例:对象:人 静态特征:身高(1.8米)
2.动态行为(方法),一般用函数实现,例:对象:人 动态行为:吃饭
注:一个对象可能有多个属性和方法

类是对对象的抽象描述,由描述这类对象的数据和处理这些数据的函数组成
(类是一组具有相同属性和行为特征的对象的抽象描述)

类和对象的关系

抽象和具体的关系,类是多个对象的归纳和总结(分类的结果),对象又是类的个体实物,一个对象就是类的一个实例。
类是对象的“模板” ,同时定义了对象的特性和操作。
类是对象的抽象描述,而对象是类的具体实例。
(其实类和对象就像是在C语言中的数据类型和变量)

类中的成分有两种:数据成员和成员函数

运用类的好处:

类将一些数据及与数据相关的函数封装在一起,使类中的数据得到很好的“保护”。在大型程序中不会被随意修改。

类的定义格式:

class  Student
{ private : //私有
     char Name[20];
     float Math;
     float Chinese;	
  public : //公有
     float  average;
     void SetName(char *name);
     void  SetMath(float math);
     void  SetChinese(float ch);
     float GetAverage(void);
}; //记得加分号

用关键字private限定的成员称为私有成员,对私有成员限定在该类的内部使用,即只允许该类中的成员函数使用私有的成员数据,对于私有的成员函数,只能被该类内的成员函数调用。

用关键字public限定的成员称为公有成员,公有成员的数据或函数不受类的限制,可以在类内或类外自由使用。

而用关键字protected所限定的成员称为保护成员,只允许在类内及该类的派生类中使用保护的数据或函数。即保护成员的作用域是该类及该类的派生类。

每一个限制词(private等)在类体中可使用多次。一旦使用了限制词,该限制词一直有效,直到下一个限制词开始为止。默认的限制词是private

类内函数的定义

可以直接在类内写函数体

class  A
{       
  float  x, y;
  public:
      void Setxy(float a,float  b){
      x = a;
      y = b;
      }
      void Printinfo(void) 
      //注意:若是私有变量,无法在类外用输入输出函数操作类内变量
      //需要在类定义内写输入输出
      {printf("x=%d,y=%d",x,y);}
};	

成员函数与成员数据的定义不分先后,也可以先说明函数原型,再在类体外定义函数体。

class  A
{       float  x, y;
  public:
      void Setxy(float a,float  b);
      void  Print(void);
};
void A::Setxy(float a,float  b)
{  x=a;   y=b;   }
void  A::Print(void)
{   cout<<x<<‘\t’<<y<<endl;  }

在定义一个类时, 在其类体中又包含了一个类的完整定义,称为类的嵌套 。

类中的成员函数与前面介绍的普通函数一样,成员函数可以带有缺省的参数,也可以重载成员函数 。 重载时,函数的形参必须在类型或数目上不同。(否则会出现二义错误)(函数重载详见第2讲)

可以有缺省参数的成员函数,若形参不完全缺省,则必须从形参的右边开始缺省。

不能对数据变量在类内直接赋值 类内的成员变量不能使用auto extern register修饰