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

📄 list1604.cpp

📁 teach yourself C++ in 21 days 第五版
💻 CPP
字号:
// Listing 16.4 Passing by Value
#include "MyString.hpp"

class Employee
{
  public:
    Employee();
    Employee(char *, char *, char *, long);
    ~Employee();
    Employee(const Employee&);
    Employee & operator= (const Employee &);

    const String & GetFirstName() const
      { return itsFirstName; }
    const String & GetLastName() const { return itsLastName; }
    const String & GetAddress() const { return itsAddress; }
    long GetSalary() const { return itsSalary; }

    void SetFirstName(const String & fName)
      { itsFirstName = fName; }
    void SetLastName(const String & lName)
      { itsLastName = lName; }
    void SetAddress(const String & address)
      { itsAddress = address; }
    void SetSalary(long salary) { itsSalary = salary; }
  private:
    String    itsFirstName;
    String    itsLastName;
    String    itsAddress;
    long      itsSalary;
};

Employee::Employee():
   itsFirstName(""),
   itsLastName(""),
   itsAddress(""),
   itsSalary(0)
{}

Employee::Employee(char * firstName, char * lastName,
   char * address, long salary):
   itsFirstName(firstName),
   itsLastName(lastName),
   itsAddress(address),
   itsSalary(salary)
{}

Employee::Employee(const Employee & rhs):
   itsFirstName(rhs.GetFirstName()),
   itsLastName(rhs.GetLastName()),
   itsAddress(rhs.GetAddress()),
   itsSalary(rhs.GetSalary())
{}

Employee::~Employee() {}

Employee & Employee::operator= (const Employee & rhs)
{
   if (this == &rhs)
      return *this;

   itsFirstName = rhs.GetFirstName();
   itsLastName = rhs.GetLastName();
   itsAddress = rhs.GetAddress();
   itsSalary = rhs.GetSalary();

   return *this;
}

void PrintFunc(Employee);
void rPrintFunc(const Employee&);

int main()
{
   Employee Edie("Jane","Doe","1461 Shore Parkway", 20000);
   Edie.SetSalary(20000);
   Edie.SetFirstName("Edythe");
   String LastName("Levine");
   Edie.SetLastName(LastName);

   cout << "Constructor count: " ;
   cout << String::ConstructorCount << endl;
   rPrintFunc(Edie);
   cout << "Constructor count: ";
   cout << String::ConstructorCount << endl;
   PrintFunc(Edie);
   cout << "Constructor count: ";
   cout << String::ConstructorCount << endl;
   return 0;
}
void PrintFunc (Employee Edie)
{
   cout << "Name: ";
   cout << Edie.GetFirstName().GetString();
   cout << " " << Edie.GetLastName().GetString();
   cout << ".\nAddress: ";
   cout << Edie.GetAddress().GetString();
   cout << ".\nSalary: " ;
   cout << Edie.GetSalary();
   cout << endl;
}

void rPrintFunc (const Employee& Edie)
{
   cout << "Name: ";
   cout << Edie.GetFirstName().GetString();
   cout << " " << Edie.GetLastName().GetString();
   cout << "\nAddress: ";
   cout << Edie.GetAddress().GetString();
   cout << "\nSalary: " ;
   cout << Edie.GetSalary();
   cout << endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -