⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 employ2.cpp

📁 VC源代码大全(精华版)
💻 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 + -