📄 employ2.cpp
字号:
/*
Employ2.cpp -- Testing operator overloading.
*/
#include <stdio.h>
#include <iostream.h>
#include <string.h>
class CEmployee
{
public:
CEmployee (int ID, char *First, char *Last);
CEmployee ()
{
m_EmployeeFirst = NULL;
m_EmployeeLast = NULL;
}
CEmployee (const CEmployee& old);
~CEmployee ();
int GetID () {return (m_EmployeeID);}
char *GetFirstName () {return (m_EmployeeFirst);}
char *GetLastName () {return (m_EmployeeLast);}
void PutNewData (int NewID = 0,
char *NewFirst = NULL,
char *NewLast = NULL);
const CEmployee& operator= (const CEmployee &);
private:
int m_EmployeeID;
char *m_EmployeeFirst;
char *m_EmployeeLast;
};
void main (void)
{
CEmployee emp[] = {
CEmployee (1641, "Thomas", "Jefferson"),
CEmployee (1802, "George", "Washington"),
CEmployee (1732, "John", "Adams"),
CEmployee (1752, "Andrew", "Jackson"),
CEmployee (2401, "Elsie", "Smith")
};
//
// Thomas Jefferson got married and wants to change his
// last name to "Skelton." We need to save the old record
// so create a new one
CEmployee NewEmp = emp[0];
// NewEmp = emp[0];
NewEmp.PutNewData(0, NULL, "Skelton");
printf ("%s %s employee ID is %d (emp[0])\n",
emp[0].GetFirstName(),
emp[0].GetLastName(), emp[0].GetID());
printf ("%s %s employee ID is %d (NewEmp)\n",
NewEmp.GetFirstName(),
NewEmp. GetLastName(), NewEmp.GetID());
}
CEmployee::CEmployee (int ID, char *First, char *Last)
{
m_EmployeeID = ID;
m_EmployeeFirst = new char [strlen (First) + 1];
strcpy (m_EmployeeFirst, First);
m_EmployeeLast = new char [strlen (Last) + 1];
strcpy (m_EmployeeLast, Last);
}
CEmployee::~CEmployee ()
{
delete [] m_EmployeeFirst;
delete [] m_EmployeeLast;
}
void CEmployee::PutNewData (int NewID, char *NewFirst,
char *NewLast)
{
if (NewID)
m_EmployeeID = NewID;
if (NewFirst != NULL)
{
delete [] m_EmployeeFirst;
m_EmployeeFirst = new char [strlen (NewFirst) + 1];
strcpy (m_EmployeeFirst, NewFirst);
}
if (NewLast != NULL)
{
delete [] m_EmployeeLast;
m_EmployeeLast = new char [strlen (NewLast) + 1];
strcpy (m_EmployeeLast, NewLast);
}
}
const CEmployee& CEmployee::operator=(const CEmployee &Old)
{
delete [] m_EmployeeFirst;
delete [] m_EmployeeLast;
m_EmployeeFirst = new char
[strlen (Old.m_EmployeeFirst) + 1];
m_EmployeeLast = new char
[strlen (Old.m_EmployeeLast) + 1];
strcpy (m_EmployeeFirst, Old.m_EmployeeFirst);
strcpy (m_EmployeeLast, Old.m_EmployeeLast);
m_EmployeeID = Old.m_EmployeeID;
return (*this);
}
CEmployee::CEmployee (const CEmployee &Old)
{
m_EmployeeFirst = new char
[strlen (Old.m_EmployeeFirst) + 1];
m_EmployeeLast = new char
[strlen (Old.m_EmployeeLast) + 1];
strcpy (m_EmployeeFirst, Old.m_EmployeeFirst);
strcpy (m_EmployeeLast, Old.m_EmployeeLast);
m_EmployeeID = Old.m_EmployeeID;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -