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;
}

浙公网安备 33010602011771号