类:类是面向对象编程不同于面向过程编程的用户自定义数据类型。
class CGoods为类头,CGoods为类名,花括号内为类成员表。
class CGoods{
private:
char Name[10];
int Amount;
float Price;
float Total_value;
public:
void RegisterGoods(char[],int,float); //输入数据
void CountTotal(void); //计算商品总价值
void GetName(char[]); //读取商品名
int GetAmount(void); //读取商品数量
float GetPrice(void); //读取商品单价
float GetTotal_value(void);//读取商品总价值
protected:
};
类具有三种访问限定符:private-私有,protected-保护,public-公有。其中,从外部只能访问public部分,因此我们只能通过RegisterGoods函数来修改private部分的值,一般private部分都是数据,因此通过对类的内容的权限进行访问限定可以保证数据不会被随意更改,从而体现了类的封装性。
对象:对象与类的关系如图。类是一个我们(用户)定义的数据类型,用类定义的实例我们称为对象,例如:CGoods apple,则apple为对象。当我们声明一个类时,计算机是不会为类分配内存的,它只会为对象分配内存。因为类就像 int x 中的int,而对象时x。
构造函数:由于类中私有部分无法进行直接操作,因此需要借助一个公有函数来在定义对象时自动执行,初始化私有部分的数据,这个公有函数我们称为构造函数,他是特殊的公有函数。具有以下特性:
1,与类名同名;
2,无返回类型,注意不是viod,而是什么都没有;
3,当对象被建立时,自动被调用,且在对象整个生存期中只被调用这一次;
4,可以被重载;
5,可在类中被定义,也可在类外被定义;
6,若类中缺失构造函数,C++编译器会自动给出一个缺省的构造函数: 类名(void){};
CGoods(char *name,int amount,float price){//带有三个入口参数的构造函数
strcpy(Name,name);
Amount=amount;
Price=price;
Total_value=amount*prince;
}
CGoods(void){//不带有入口参数的构造函数
Name[0]='\0';
Amount=0;
Price=0.0;
Total_value=0.0;
}
CGoods apple1("Fushi",100,1);//当定义对象带有入口参数,则默认为前者的构造函数
CGoods apple2();//默认为第二个构造函数
析构函数:析构函数与构造函数正好相反,当对象生存期结束时调用析构函数来注销该对象同时进行善后工作,析构函数可以缺省。