C++ 使用静态变量和静态方法统计学生分数和学生个数
#include <iostream>
#include <cstdlib>using namespace std;int strlen(const char s[]){int len = 0;while (s[len]){len++;}return len; // 返回数组str中首个值为null的元素的下标值
}char* strcpy(char *p, const char *s){char *t = p;while (*p++ = *s++){}return t;
}class Student {private:int m_id; // 学生编号 double m_score; // 学生分数char *m_name; // 统计学生个数的静态成员变量static int m_count;// 统计学生总分数的静态成员变量static double sum_score;public:Student(int id, const char *name ,double score) {// 创建一个学生m_id = id;m_score = score;m_count++; // 对创建的学生对象的人数进行累加 sum_score += score; // 对创建的学生对象的分数进行累加 //给姓名赋值int len = strlen(name);m_name = (char*)malloc(len + 1);strcpy(m_name, name);}static int getCount() { // 提供一个访问学生人数的静态方法 return m_count;}static double getAvg() { // 提供一个访问平均分的静态方法 return sum_score / m_count;}int getId(){return m_id;}char* getName(){return m_name;}double getScore(){return m_score;}~Student() {m_count--; // 每析构一个对象,数量减去一 sum_score -= m_score; // 析构一个对象,减去对象对应的学生分数 if (m_name != NULL) {free(m_name); // 消除占用空间 m_name = NULL;}}
};int Student::m_count = 0; // 对静态变量进行初始化 double Student::sum_score = 0.0; // 对静态变量进行初始化 int main(){Student *s1 = new Student(1, "vvcat1", 88);Student *s2 = new Student(2, "vvcat2", 95);Student *s3 = new Student(3, "vvcat3", 99);Student *s4 = new Student(4, "vvcat4", 77);Student *s5 = new Student(5, "vvcat5", 96);cout << "----------学生成绩列表-------------" << endl;cout << "编号 姓名 成绩" << endl;cout << s1 -> getScore();cout << " ";cout << s1 -> getName();cout << " ";cout << s1 -> getScore();cout << endl;cout << s2 -> getScore();cout << " ";cout << s2 -> getName();cout << " ";cout << s2 -> getScore();cout << endl;cout << s3 -> getScore();cout << " ";cout << s3 -> getName();cout << " ";cout << s3 -> getScore();cout << endl;cout << s4 -> getScore();cout << " ";cout << s4 -> getName();cout << " ";cout << s4 -> getScore();cout << endl;cout << s5 -> getScore();cout << " ";cout << s5 -> getName();cout << " ";cout << s5 -> getScore();cout << endl;cout << "-----------------------------------" << endl;cout << "学生总人数:" << Student::getCount() << endl;cout << "学生的平均分:" << Student::getAvg() << endl;// 调用析构函数 delete s5; delete s4;delete s3;delete s2;delete s1;return 0;
}
C++ 使用静态变量和静态方法统计学生分数和学生个数相关推荐
- 韩顺平php视频笔记69 静态变量与静态方法
静态变量(类变量)与静态方法(类方法) 思路: 1. 使用全局变量 * 什么是全局变量, 在程序中,都可以使用的变量称为全局变量. 当我们了解全局变量后,我们来看看如何解决问题? <?php / ...
- JAVA 静态变量,静态方法,main方法详解(韩顺平)
目录 一.类变量 1.类变量的引入 2.类变量的定义 3.类变量的特点 4.如何定义类变量 5.如何访问类变量 6.类变量使用细节 二.类方法 1.基本介绍 2.定义类方法 3.类方法的访问 4.类方 ...
- JAVA 静态变量与静态方法
java中静态变量和静态方法分别有什么特点? 悬赏分:0 - 解决时间:2006-4-10 10:28 提问者: vv_clear - 二级 最佳答案 为什么问了两次?再贴上另一篇 Thinking: ...
- java中静态变量和静态方法分别有什么特点?
java中静态变量和静态方法分别有什么特点? 悬赏分:0 - 解决时间:2006-4-10 10:28 提问者: vv_clear - 二级 最佳答案 为什么问了两次?再贴上另一篇 Thinking: ...
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
***对象作为参数传递*** class passparam { int x; public static void main(String[] args) { passparam obj = ...
- Java静态变量与静态方法与成员变量成员方法的区别
java变量分为实例变量和静态变量方法分为实例方法和静态方法 如 class Example{ int data;//定义实例变量,也叫成员变量 public void method(){ / ...
- 1.16 static关键字(静态变量和静态方法)
在类中,使用 static 修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有. 静态成员不依赖于类的特定实例,被 ...
- JAVA的静态变量、静态方法、静态类
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象 ...
- java 静态类 静态方法_JAVA的静态变量、静态方法、静态类
静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象 ...
最新文章
- 深度学习框架哪家强?MXNet称霸CNN、RNN和情感分析,TensorFlow仅擅长推断特征提取
- 【64QAM同步】基于FPGA/MATLAB的64QAM同步系统的实现
- HTML与CSS(图解6):超链接
- 周鸿祎VS马化腾 360VS腾讯工资待遇盘点
- 微信小程序之wx.request:fail错误,真机预览请求无效问题解决,安卓,ios网络预览异常(转)...
- 【Siddhi 5】Siddhi 5 源码编译
- webstore报 ESLint: Expected space or tab after '//' in comment.(spaced-comment)
- 关于学计算机有什么用检讨书,旷计算机课检讨书
- iptables的nat规则骚操作
- rest-framework解析器,url控制,分页,响应器,渲染器,版本控制
- design expert响应面分析_第01组(17)需求分析报告 - yuqiao1120
- C# Winform获取路径
- jQuery密码强度校验
- C++ Liberary websit
- linux连不上网问题总结
- web常用模块测试用例
- cad.net 利用win32api实现不重复打开dwg路径的文件夹(资源管理器)
- Elsevier系旗下期刊论文投稿流程
- 计算机毕业设计Java金融业撮合交易系统(源码+系统+mysql数据库+lw文档)
- 丢手帕问题 java_java入门小程序—17人游戏(丢手绢问题) | 学步园