Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Листинг 15.2. Класс Employee






1: #include " String.hpp"

2:

3: class Employee

4: {

5:

6: public:

7: Employee();

8: Employee(char *, char *, char > >, long);

9: ~Employee();

10: Employee(const Employee&);

11: Employee & operator= (const Employee &);

12:

13: const String & GetFirstName() const

14: { return itsFirstName; }

15: const String & GetLastName() const { return itsLastName; }

16: const String & GetAddress() const { return itsAddress; }

17: long GetSalary() const { return itsSalary; } 18;

19: void SetFirstName(const String & fNama)

20: { itsFirstName = fName; }

21: void SetLastName(const String & lNama)

22: { itsLastName = lNamo; }

23: void SetAddress(const String & address)

24: { itsAddress = address; }

25: void SetSalary(long salary) { itsSalary = salary; }

26: private:

27: String itsFirstName;

28: String itsLastName;

29: String itsAddress;

30: long itsSalary;

31: };

32:

33: Employee:: Employee();

34: itsFirstName(" "),

35: itsLastName(" "),

36: itsAddress(" "),

37: itsSalary(0)

38: { }

39:

40: Employee:: Employee(char * firstName, char * lastName,

41: char * address, long salary):

42: itsFirstName(firstName),

43: itsLastName(lastName),

44: itsAddress(address),

45: itsSalary(salary)

46: { }

47:

48: Employee:: Employee(const Employee & rhs):

49: itsFirstName(rhs.GetFirstName()),

50: itsLastName(rhs, GetLastName()),

51: itsAddress(rhs, GetAddress()),

52: itsSalary(rhs.GetSalary())

53: { }

54:

55: Employee:: ~Employea() { }

56:

57: Employee & Employae:: Qperator= (const Employee & rhs)

58: {

59: if (thls — & rhs)

60: return *this;

61:

62: itsFlrstName = rhs.GetFlrstName();

63: itsLastName = rhs, GetLastName();

64: itsAddress = rhs, GetAddress();

65: itsSalary = rhs, GetSalary();

66:

67: return *thls;

68: }

69:

70: int main()

71: {

72: Employee Edie(" Jane", " Doe", " 1461 Shore Parkway", 20000);

73: Edie.SetSalary(50000);

74: String LastName(" Levine");

75: Edie.SetLastName(LastName);

76: Edie.SetFirstName(" Edythe");

77:

78: cout < < " Имя: ";

79: cout < < Edie.GetFirstName().GetString();

80: cout < < " " < < Edie.GetLastName().GetString();

81: cout < < ".\nАдрес: ";

82: cout < < Edie.GetAddress().GetString();

83: cout < < ".\nЗарплата: ";

84: cout < < Edie.GetSalary();

85: return 0;

86: }

 

Примечание: Сохраните листинг 15.1 в файле с именем string. hpp. Затем всякий раз, когда понадобится класс String, вы сможете вставить листинг 15.1, просто добавив строку #include " String.hpp". Это первая строка в листинге 15.2.

 

Результат:

Name: Edythe Levine.

Address: 1461 Shore Parkway.

Salary: 50000

 

Анализ: В листинге 15.2 объявляется класс Employee, переменными-членами которого выступают три объекта класса String — itsFirstName, itsLastName и itsAddress.

В строке 72 создается объект Employee, который инициализируется четырьмя значениями. В строке 73 вызывается метод доступа SetSalary класса Employee, который принимает константное значение 50000. В реальной программе это значение определялось бы либо динамически в процессе выполнения программы, либо устанавливалось бы константой.

В строке 74 создается и инициализируется строковой константой объект класса String, который в строке 75 используется в качестве аргумента функции SetLastName().

В строке 76 вызывается метод SetFirstName класса Employee с еще одной строковой константой в качестве параметра. Однако если вы обратитесь к объявлению класса Employee, то увидите, что в нем нет функции SetFirstName(), принимающей строку символов как аргумент. Для функции SetFirstName() в качестве параметра задана константная ссылка на объект String. Тем не менее компилятор не покажет сообщения об ошибке, поскольку в строке 9 листинга 15.1 объявлен конструктор, создающий объект String из строковой константы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.