对象
定义:客观存在的实体
组成:
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修饰