C++ | 静态成员 | A2实验四

想从键盘传值,只要在构造函数中写cin语句.

Employee::Employee()
{
	cin >> num;
	cin >> name;
	cin >> sex;
	cin >> wage;
	count++;
	totalWage += wage;
}

 

 

带参构造函数  和  默认构造函数  就是不能同时放在类内.两者格式太类似,都是

构造函数名 (类型1 形参1,类型2 形参2,.........)

编译器会混淆,要么分开两者,要么用无参构造参数赋初值

 

 

一.

描述

定义一个描述员工(Employee)基本情况的类,数据成员包括编号(num)、姓名(name)、性别(sex)、工资(wage)、人数(count)、总工资(totalWage)。

【要求】:

1.总工资和人数为静态数据成员;

2.构造函数由已知参数:编号(nu) 、姓名(nm) 、性别(sx)和工资(wg)进行初始化;

3.显示基本数据函数(ShowBase)用于显示学生的编号、姓名、性别和工资;

4.显示静态数据函数(ShowStatic)为静态成员函数,用于显示人数和总工资;

5.在主函数中定义若干个员工对象,分别显示员工基本信息,以及显示员工人数和总工资。

 

输入

员工的基本信息

输出

员工的基本信息、员工人数和总工资

样例输入

101 李丽 女 5600
102 张鹏 男 6200
103 王俊亮 男 5780

样例输出

101 李丽 女 5600
102 张鹏 男 6200
103 王俊亮 男 5780
员工人数为:3
总工资为:17580

可将  set()的功能 和 人数/总工资累加  直接写进构造函数.

只需要写一个构造函数

#include <iostream>
#include <string>
using namespace std;

class Employee
{
public:
	Employee()
	{
		cin >> num>> name>> sex>> wage;
		count++;
		totalWage += wage;
	}
																
	static int count;//人数
	static int totalWage;//总工资

	void ShowBase();
	void static ShowStatic();

private:
	int num;         //编号
	string name;   //名字
	string sex;     //性别
	int wage;        //个人工资

};


void Employee::ShowBase()
{
	
	cout << "编号:" << num << "   " << "姓名:" << name << "  " << "性别:" << sex << "   " << "工资:" << wage << endl;
}

void Employee::ShowStatic()
{

	cout << "人数为:" << count << "   " << "总工资:" << totalWage << "元" << endl;
}


int Employee::count = 0;
int Employee::totalWage = 0;

//-----------------------------------------------------------------------------

int main()
{
	int i;
	Employee a[3];

	for (i = 0; i < 3; i++)
	{
		cout << "请输入第" << i + 1 << "名人员的编号,名字,性别和工资" << endl;
		a[i].ShowBase();
		
	}

	Employee::ShowStatic();
	system("pause");
	return 0;

 

 

 

================================================================================================

描述

定义日期类Time和时间类Date,并定义一个类外的普通函数display,

然后分别在Time类和Date类中将display声明为友元函数。

在主函数中调用display函数,输出年月日和时分秒

class Time
{
public:
Time();

private:
int hour;
int minute;
int sec;
};

class Date
{
public:
Date();

private:
int year;
int month;
int day;
};

#include <iostream>
using namespace std; 
class Time;//非得在开头多声明一次
class Date
{
public:
	Date()
	{
		 year=0;
		 month=0;
		 day=0;
	};
	
	Date(int y, int m, int d) :year(y), month(m), day(d) {}
	void get_date()
	{
		cout << "请输入年月日" << endl;
		cin >> year >> month >> day;
	}
	friend void display(Date d, Time t);
private:
	int year;
	int month;
	int day;
};

class Time
{
public:
	Time(int h,int m,int s):hour(h),minute(m),sec(s){}
	//在出现带参构造函数时,不能再出现默认构造函数
	Time()
	{
		 hour=0;
		 minute=0;
		 sec=0;
	}//在希望键盘键入数据时,采用这种方式初始化,不可用默认构造参数
	void get_time()
	{
		cout << "请输入时分秒" << endl;
		cin >> hour>> minute >> sec;
	}
	friend void display(Date d, Time t);
private:
	int hour;
	int minute;
	int sec;
};


void display(Date d,Time t)//&d ,&t是对象t1,d1的引用,但不加&也无妨
{
	cout << d.year << "/" << d.month << "/" << d.day << endl;
	cout << t.hour << ":" << t.minute << ":" << t.sec << endl;

}



int main()
{
	Date d1; Time t1;
	d1.get_date();
	t1.get_time();
	display(d1, t1);
	system("pause");
	return 0;
}

 

posted @ 2018-10-28 20:55  心碎人俱乐部  阅读(21)  评论(0)    收藏  举报