4.1 类和成员函数的定义
2016-06-12 09:05
218 查看
类(class)和对象(object)用于实现计算机世界中的“封装”(Encapsulation),即把数据(属性)和函数(操作)合成一个整体,这是面向对象程序设计最基本的特性。
◆ 1、在C++中,“类”是一种数据类型。例如,商场中的商品可以用“商品类”来描述。
商品可以这样描述:
商品名称(用字符串描述),
该商品数量(用整型数描述),
该商品单价(用浮点数描述),
该商品总价(用浮点数描述)。
相应的商品类如下:
class CGoods
{
public :
char Name[21] ; //对于中文可用wchar_t name[11]
int Amount ;
float Price ;
float Total_value ;
}; //最后的分号不可少
说明:关键字class是数据类型说明符,指出下面说明的是类。标识符CGoods是商品这个类的类型名。花括号中是构成类体的一系列的成员,此处为数据成员;关键字public是一种访问限定符,表示其后所列为公共成员,就是说可以在外部对这些成员进行访问。
◆ 2、类定义的更关键部分是对数据成员的操作。这可以用函数来完成。这些函数也作为类的成员存在!
class CGoods
{
private :
char Name[21] ;
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) ; //读取商品总价值
};
说明:这个描述商品的方案中,在类中引进了成员函数(或称函数成员)(member
function),也就是函数也成了数据(类)中的成员。成员函数可以直接使用类定义中的任一成员,可以处理数据成员,也可调用其他函数成员。
类把数据(事物的属性)和函数(事物的行为——操作)封装为一个整体。
在前面,只对成员函数作了一个声明,或者讲只给出了函数的原型,并没有对函数进行定义。函数定义通常在类的说明之后进行。
商品类CGoods中的成员函数可以如下定义:(在前面的代码后加上以下部分)
void CGoods::RegisterGoods(char* name,int amount, float price)
//登记新商品
{
//char*是指向字符的指针类型说明,name现可理解为字符串
strcpy(Name , name) ; //字符串拷贝函数
Amount=amount ; Price=price ;
}
void CGoods::CountTotal(void) //计算商品总价值
{
Total_value = Price*Amount;
}
void CGoods::GetName(char* name) //读取商品名
{
strcpy(name , Name);
}
int CGoods::GetAmount(void) //读取商品数量
{
return(Amount) ;
}
float CGoods::GetPrice(void) //读取商品单价
{
return(Price) ;
}
float CGoods::GetTotal_value(void) //读取商品总价值
{
return(Total_value) ;
}
C++类的定义
◆ 1、在C++中,“类”是一种数据类型。例如,商场中的商品可以用“商品类”来描述。商品可以这样描述:
商品名称(用字符串描述),
该商品数量(用整型数描述),
该商品单价(用浮点数描述),
该商品总价(用浮点数描述)。
相应的商品类如下:
class CGoods
{
public :
char Name[21] ; //对于中文可用wchar_t name[11]
int Amount ;
float Price ;
float Total_value ;
}; //最后的分号不可少
说明:关键字class是数据类型说明符,指出下面说明的是类。标识符CGoods是商品这个类的类型名。花括号中是构成类体的一系列的成员,此处为数据成员;关键字public是一种访问限定符,表示其后所列为公共成员,就是说可以在外部对这些成员进行访问。
◆ 2、类定义的更关键部分是对数据成员的操作。这可以用函数来完成。这些函数也作为类的成员存在!
class CGoods
{
private :
char Name[21] ;
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) ; //读取商品总价值
};
说明:这个描述商品的方案中,在类中引进了成员函数(或称函数成员)(member
function),也就是函数也成了数据(类)中的成员。成员函数可以直接使用类定义中的任一成员,可以处理数据成员,也可调用其他函数成员。
类把数据(事物的属性)和函数(事物的行为——操作)封装为一个整体。
C++成员函数的定义
在前面,只对成员函数作了一个声明,或者讲只给出了函数的原型,并没有对函数进行定义。函数定义通常在类的说明之后进行。商品类CGoods中的成员函数可以如下定义:(在前面的代码后加上以下部分)
void CGoods::RegisterGoods(char* name,int amount, float price)
//登记新商品
{
//char*是指向字符的指针类型说明,name现可理解为字符串
strcpy(Name , name) ; //字符串拷贝函数
Amount=amount ; Price=price ;
}
void CGoods::CountTotal(void) //计算商品总价值
{
Total_value = Price*Amount;
}
void CGoods::GetName(char* name) //读取商品名
{
strcpy(name , Name);
}
int CGoods::GetAmount(void) //读取商品数量
{
return(Amount) ;
}
float CGoods::GetPrice(void) //读取商品单价
{
return(Price) ;
}
float CGoods::GetTotal_value(void) //读取商品总价值
{
return(Total_value) ;
}
相关文章推荐
- SVN服务器的本地搭建和使用
- IOS后台机制分析
- 那些曾经记得的C++库
- xenapi-add-support-for-vgpu
- 一个32岁入门的70后程序员给我的启示
- AsyncTask详解
- 3.10 编译预处理
- JS 监控浏览器关闭时提醒
- 笔试题77. LeetCode OJ (64)
- 脱壳_详细_ZC
- iOS 下的相册与图片处理
- 3.9 头文件与多文件结构
- 3.8 函数的重载、内联和默认参数
- caffe 参数介绍
- ASP.NET Core 中文文档 第二章 指南(4.1)ASP.NET Core MVC 与 Visual Studio 入门
- Installation error: INSTALL_FAILED_CONTAINER_ERROR
- 排它平方数
- 3.7 函数的递归调用
- 11年福州 E
- 操作系统期末复习2