本道题主要是写定义,就只放定义的cpp代码,另外两个题目上都有
emp.cpp
#include "emp.h"
abstr_emp::abstr_emp()
{
}
abstr_emp::abstr_emp(const std::string & fn, const std::string & ln, const std::string & j)
{
fname = fn;
lname = ln;
job = j;
}
void abstr_emp::ShowAll() const
{
std::cout << "Name: " << fname << " " << lname << std::endl;
std::cout << "Job: " << job << std::endl;
}
void abstr_emp::SetAll()
{
std::cout << "Please input your first name: ";
std::cin >> fname;
std::cout << "Please input your last name: ";
std::cin >> lname;
std::cout << "Please input your job: ";
std::cin >> job;
}
abstr_emp::~abstr_emp()
{
}
std::ostream & operator<<(std::ostream & os, const abstr_emp & e)
{
os << e.fname << " " << e.lname << ": " << e.job;
return os;
}
employee::employee() :abstr_emp()
{
}
employee::employee(const std::string & fn, const std::string & ln, const std::string & j) : abstr_emp(fn, ln, j)
{
}
void employee::ShowAll() const
{
abstr_emp::ShowAll();
}
void employee::SetAll()
{
abstr_emp::SetAll();
}
manager::manager() :abstr_emp(), inchargeof(0)
{
}
manager::manager(const std::string & fn, const std::string & ln, const std::string & j, int ico) : abstr_emp(fn, ln, j), inchargeof(ico)
{
}
manager::manager(const abstr_emp & e, int ico) : abstr_emp(e), inchargeof(ico)
{
}
manager::manager(const manager & m) : abstr_emp(m)
{
}
void manager::ShowAll() const
{
abstr_emp::ShowAll();
std::cout << "InChargeOf: " << inchargeof << std::endl;
}
void manager::SetAll()
{
abstr_emp::SetAll();
std::cout << "Please input your inchargeof: ";
std::cin >> inchargeof;
}
fink::fink() :abstr_emp()
{
}
fink::fink(const std::string & fn, const std::string & ln, const std::string & j, const std::string & rpo) : abstr_emp(fn, ln, j), reportsto(rpo)
{
}
fink::fink(const abstr_emp & e, const std::string & rpo) : abstr_emp(e), reportsto(rpo)
{
}
fink::fink(const fink & e) : abstr_emp(e)
{
}
void fink::ShowAll() const
{
abstr_emp::ShowAll();
std::cout << "ReportsTo: " << reportsto << std::endl;
}
void fink::SetAll()
{
abstr_emp::SetAll();
std::cout << "Please input ReportsTo: ";
std::cin >> reportsto;
}
highfink::highfink() :abstr_emp(), manager(), fink()
{
}
highfink::highfink(const std::string & fn, const std::string & ln, const std::string & j, const std::string & rpo, int ico)
: abstr_emp(fn, ln, j), manager(fn, ln, j, ico), fink(fn, ln, j, rpo)
{
}
highfink::highfink(const abstr_emp & e, const std::string & rpo, int ico)
: abstr_emp(e), manager(e, ico), fink(e, rpo)
{
}
highfink::highfink(const fink & f, int ico)
: abstr_emp(f), manager(f, ico), fink(f)
{
}
highfink::highfink(const manager & m, const std::string & rpo)
: abstr_emp(m), manager(m), fink(m, rpo)
{
}
highfink::highfink(const highfink & h)
: abstr_emp(h), manager(h), fink(h)
{
}
void highfink::ShowAll() const
{
abstr_emp::ShowAll();
std::cout << "InChargeOf: " << manager::InChargeOf() << std::endl;
std::cout << "ReportsTo: " << fink::ReportsTo() << std::endl;
}
void highfink::SetAll()
{
abstr_emp::SetAll();
std::cout << "Please input your inchargeof: ";
std::cin >> manager::InChargeOf();
std::cout << "Please input ReportsTo: ";
std::cin >> fink::ReportsTo();
}