【学习心得】面向对象的程序设计中静态数据成员以及静态成员函数在统计中的作用
来源:互联网 发布:ubuntu emacs安装 编辑:程序博客网 时间:2024/04/28 00:14
在面向对象的程序设计中,允许程序员在类的定义中定义静态数据成员以及静态成员函数。静态数据成员不属于某个对象,而属于一个类,为所有对象所共享。很容易地就可以联想到,静态数据成员的这一特性可以用于统计。以下以一个简单的例子来阐述静态数据成员以及静态成员函数在统计方面的作用。
商店销售一种商品,允许销售员在允许的范围内自定义价格,已知三名销售员的销售数据如下所示:
销售员号 销售件数 销售单价
S101 5 23.5
S102 12 24.56
S103 100 21.5
计算每件商品的平均售价。
这里我们就可以将销售数目与销售额定义为静态数据成员,这个成员属于类而不属于某个特定的对象,对象的成员函数(无论是否是静态成员函数)都可以引用它或者改变它的值。
源代码如下:
//sale.h
#include <string>
using namespace std;
//以下是类的定义
class sale
{
public:
sale(string, int, float);
~sale(void);
static float average(void); //定义一个静态成员函数,处理静态数据成员
static void display(void); //以一定的格式输出静态数据成员
void sumup(void); //由于要处理非静态数据成员,所以sumup函数不可以定义为静态
private:
static int acount; //定义一个属于类的静态数据成员,计算卖出商品的数目
static float sum; //定义一个属于类的静态数据成员,计算卖出商品的总价值
string num; //表示销售员编号的字符串
bool flag; //这是一个标志项,用以防止一个销售员的销售数据因误操作被一次以上地统计
int hm; //该销售员的销售数目
float perprice; //该销售员卖出商品的平均价格
};
//funidentify.cpp
//以下是类定义中所声明的函数的函数体
#include <iostream>
#include <iomanip>
#include <string>
#include "sale.h"
using namespace std;
sale::sale(string nu, int n, float per) :num(nu), hm(n), perprice(per){ flag = true; } //构造函数
sale::~sale(){} //析构函数
void sale::sumup(void) //统计商品销售数量与销售额
{
if (flag == true) //这里,flag标志项起到作用,当标志项为真时才统计
{
sum += (hm*perprice);
acount += hm;
flag = false; //一旦销售员的销售数据被统计,标志项应当改变
}
}
int sale::acount = 0;
float sale::sum = 0; //这两行是对静态数据成员的初始化
float sale::average(void) //计算平均价格的函数
{
return sum/acount;
}
void sale::display(void) //输出到屏幕
{
cout << "the average price is " <<average()<< endl;
}
//main.cpp
//以下是主函数
#include "sale.h"
using namespace std;
const int N = 3; //定义一个静态全局变量N,为销售员的数目
int main()
{
sale salesman[N] = { //对象的初始化
sale("101",5,23.5),
sale("102",12,24.56),
sale("103",100,21.5)
};
int i;
for (i = 0; i < N; i++)
(salesman + i)->sumup(); //通过循环语句以实现销售额与销售数目的统计
//(salesman + i-1)->sumup(); //如果这行语句不被注释,事实上也无法改变输出值,这是设置flag标志项的作用
sale::display(); //输出
system("pause");
return 0;
}
- 【学习心得】面向对象的程序设计中静态数据成员以及静态成员函数在统计中的作用
- 【对象数组+静态数据成员+静态成员函数+...】面向对象程序设计(B)——第二次作业
- 面向对象的程序设计学习笔记-17-静态成员数据
- C++中静态数据成员以及静态成员函数
- 静态数据成员 静态函数成员 以及 const 成员变量
- 静态成员(静态成员函数,静态数据成员)的特性
- C++中静态成员函数的作用
- static(静态)变量的作用、初始化特点以及类中静态数据成员的特点
- 面向对象的程序设计学习笔记-19-静态成员函数的使用
- static关键字的作用以及静态成员函数与非静态成员函数的区别
- 面向对象的程序设计学习笔记-18-静态数据成员实例
- 静态成员函数作用
- 常对象及常成员及静态数据成员和静态成员函数的学习内容。
- 面向对象编程基础 三 静态成员变量,静态函数以及静态代码块
- 静态成员变量和静态成员函数在C++类中的作用
- C++面向对象小结--静态成员函数
- C++中的静态数据成员和静态成员函数
- C++中的静态数据成员和静态成员函数
- 99.第 3 组微软面试题 智力题
- Ubuntu常用命令总结及修改DNS的多种方法总结
- 100.第 4 组微软面试题,挑战思维极限
- 数据结构基础-Hash Table详解
- Windows Server2012R2 添加Microsoft .NET Framework 3.5 功能失败的解决方法
- 【学习心得】面向对象的程序设计中静态数据成员以及静态成员函数在统计中的作用
- 菜鸟运维笔记:安装与配置Apache服务器
- 解一元二次方程
- YII 动态缓存
- 前端面试题
- Java环境变量配置中有关JAVA_HOME,path,Classpath含义的讲解
- 成员方法的反射:调用类中的main方法
- c语言函数调用过程
- poj3258