C++:静态数据成员和静态成员函数示例

#pragma once
class Student
{
public:
	Student();
	Student(char *pname, double);	//有参构造函数
	~Student();
public:
	static double getAverageAge();	//静态成员函数
	static int getTotalNumber();	//静态成员函数
	void printStudentInfo();		//非静态成员函数
private:
	static double m_averageAge;		//所有学生平均年龄
	static int m_totalNumber;		//学生人数
	char m_name[20];		//姓名
	double m_age;			//年龄

};

#include "stdafx.h"
#include "Student.h"

#include <iostream>
using namespace std;
double Student::m_averageAge =0;		//所有学生平均年龄
int Student::m_totalNumber = 0;		//学生人数
Student::Student()
{
}

Student::Student(char *pname, double age)
{
	strcpy_s(m_name, pname);
	m_age = age;
	m_averageAge = m_totalNumber *m_averageAge + m_age;		//总年龄
	m_totalNumber++;
	m_averageAge = m_averageAge / m_totalNumber;		//新的平均值


}
Student::~Student()		//销毁对象时,需要更新平均年龄
{
	m_averageAge = m_totalNumber *m_age - m_age;		//总年龄
	m_totalNumber--;
	m_averageAge = m_averageAge / m_totalNumber;		//新的平均值
}
double Student::getAverageAge()	//静态成员函数
{
	return m_averageAge;
}
int Student::getTotalNumber()	//静态成员函数
{
	return m_totalNumber;
}
void Student::printStudentInfo()		//非静态成员函数
{
	cout << "学生的姓名为:" << m_name << endl;
	cout << "学生的年龄为" << m_age << endl;
}

// jingtai_example.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "Student.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	Student student1("小明", 20);
	Student student2("大栗子", 22);
	Student student3("苹果", 25);
	Student *ps = &student2;		//定义一个指针
	student1.printStudentInfo();
	ps->printStudentInfo();
	
	cout << "当前学生的数量为:" << Student::getTotalNumber() << endl;
	cout << "当前学生的年龄为:" << Student::getAverageAge() << endl;
	getchar();
	return 0;
}

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值