Пример программы с использованием созданных классов

Теоретический материал

Перегрузка операторов — в программировании — один из методов реализации полиморфизма, заключающийся в способности одновременного существования в одной области видимости нескольких разных вариантов внедрения оператора, имеющих одно и то же имя, но различающихся типами характеристик, к которым они используются.

Перегрузка операций подразумевает введение в язык 2-ух взаимосвязанных особенностей: способности объявлять в одной области Пример программы с использованием созданных классов видимости несколько процедур либо функций с схожими именами и способности обрисовывать собственные реализации бинарных операторов (другими словами символов операций, обычно записываемых в инфиксной нотации, меж операндами). Принципно реализация их довольно ординарна:

· Чтоб разрешить существование нескольких одноимённых операций, довольно ввести в язык правило, согласно которому операция (процедура Пример программы с использованием созданных классов, функция либо оператор) опознаются компилятором не только лишь по имени (обозначению), да и по типам их характеристик. Таким макаром, абс(i), где i объявлено как целое, и абс(x), где x объявлено как вещественное — это две различные операции. Принципно в обеспечении конкретно таковой трактовки нет никаких сложностей.

· Чтоб дать возможность Пример программы с использованием созданных классов определять и переопределять операции, нужно ввести в язык надлежащие синтаксические конструкции. Вариантов их может быть довольно много, но на самом деле они ничем друг от друга не отличаются, довольно держать в голове, что запись вида « » принципно подобна вызову функции «(,)».

Личное задание №1

Задание: (конструктор копирования и оператор присваивания). Сделать Пример программы с использованием созданных классов иерархию классов человек и служащий. Переопределить вывод в поток и ввод из потока, конструктор копирования, оператор присваивания через надлежащие функции базисного класса.

Диаграмма классов

Описание

Класс Human:

Поля класса :

· name_ – имя человека

· surname_ – фамилия

· gender_ – пол

Способы класса :

· set-методы: set_name, set_surname, set_genderB, set_genderL

· get-методы: get_name, get_surname, get_gender

· del_name Пример программы с использованием созданных классов – чистка памяти, выделяемой под строчки имени и фамилии

Класс employee – наследник класса Human:

Поля класса :

· company_ – рабочая компания

· employment_duration – продолжительность работы (лет)

Способы класса :

· set-методы: set_company, set_duration

· get-методы: get_company, get_duration

· operator= – перегруженный оператор присваивания

· operator<> - перегруженные операторы вывода и ввода в поток (друзья)

Начальный код

Human.h

#pragma once

#include "stdio Пример программы с использованием созданных классов.h"

#include

#include

#include

using namespace std;

class Human

{

private:

char* name_; char* surname_; bool gender_;

public:

Human();

Human(char* Name, char* Sur, bool M_W);

void set_name (char* Name);

void set_surname (char* Sur);

void set_genderL (char & G);

void set_genderB (bool F);

void del_name();

~Human Пример программы с использованием созданных классов();

char* get_surname() const;

char* get_name() const;

bool get_gender() const;

};

Human.cpp

#define _CRT_SECURE_NO_WARNINGS

#include "Human.h"

Human::Human()

{

name_=(char*) calloc(1, sizeof(char*));

surname_=(char*) calloc(1, sizeof(char*));

};

Human::Human(char* Name, char* Sur, bool M_W)

{

name_=(char*) calloc (1+strlen(Name), sizeof(char*));

strcpy Пример программы с использованием созданных классов(name_, Name);

surname_=(char*) calloc (1+strlen(Sur), sizeof(char*));

strcpy(surname_, Sur);

gender_=M_W;

};

void Human::set_name (char* Name)

{

name_=(char*) realloc (name_, (1+strlen(Name))*sizeof(char*));

strcpy(name_, Name);

};

char* Human::get_name() const

{

return name_;

};

void Human::del_name()

{

free(name_);

free(surname_);

};

Human::~Human()

{

del Пример программы с использованием созданных классов_name();

}

void Human::set_surname (char* Sur)

{

surname_=(char*) realloc (surname_, (1+strlen(Sur))*sizeof(char*));

strcpy(surname_, Sur);

};

char* Human::get_surname() const

{

return surname_;

};

void Human::set_genderL(char& G)

{

if (G==77) gender_=true;

else gender_=false;

};

void Human::set_genderB(bool F) const

{

gender_=F;

};

bool Human::get_gender Пример программы с использованием созданных классов() const

{

return gender_;

};

Employee.h

#pragma once

#include "Human.h"

class employee:

public Human

{

friend ostream &operator<<(ostream & os, const employee &entry);

friend istream &operator>>(istream & os, employee &entry);

private :

char* company_;

int employment_duration;

public :

employee();

employee (char* company, int duration, char* Name, char* Sur, bool M_W );

employee (const employee & entry);

void Пример программы с использованием созданных классов set_company (char* Name);

char* get_company() const;

~employee();

void set_duration (int & prolong);

int get_duration() const;

employee & operator=(const employee & st);

};

Employee.cpp

#define _CRT_SECURE_NO_WARNINGS

#include "employee.h"

using namespace std;

employee::employee()

:Human()

{

company_=(char*) calloc(1, sizeof(char*));

};

employee::employee (char* company, int duration, char* Name Пример программы с использованием созданных классов, char* Sur, bool M_W )

: Human (Name, Sur, M_W)

{

employment_duration=duration;

company_=(char*) calloc (1+strlen(company), sizeof(char*));

strcpy(company_, company);

};

employee::employee (const employee & entry)

{

employment_duration=entry.employment_duration;

company_=(char*) realloc (company_, (1+strlen(entry.company_))*sizeof(char*));

strcpy(company_, entry.company_);

set Пример программы с использованием созданных классов_name(entry.get_name());

set_surname(entry.get_surname());

set_genderB(entry.get_gender());

};

void employee::set_company (char* Name)

{

company_=(char*) realloc (company_, (1+strlen(Name))*sizeof(char*));

strcpy(company_, Name);

};

char* employee::get_company() const

{

return company_;

};

employee::~employee()

{

free(company_);

del_name();

};

void employee::set_duration (int Пример программы с использованием созданных классов & prolong)

{

employment_duration=prolong;

};

int employee::get_duration() const

{

return employment_duration;

};

ostream &operator<<(ostream & os, const employee &entry)

{

os<<"Name: "<

return os;

};

istream &operator>>(istream & os, employee &entry)

{

char A,B;

os>>A>>B>>entry.company_;

entry.set_name(&A);

entry.set_surname(&B);

return Пример программы с использованием созданных классов os;

};

employee & employee::operator=(const employee & st)

{

if (this==&st)

return *this;

company_=(char*) realloc (company_, (1+strlen(st.get_company()))*sizeof(char*));

strcpy(company_, st.get_company());

employment_duration=st.get_duration();

set_name(st.get_name());

set_surname(st.get_surname());

set_genderB(st.get_gender());

return *this Пример программы с использованием созданных классов;

};

Пример программки с внедрением сделанных классов

#include "employee.h"

int main()

{

employee man("Apple", 4, "Biggie", "Jefferson", true);

employee man_0;

man_0=man;

cout<

system("PAUSE");

return 0;

}



primer-oshushaemaya-slozhnost-snizhaetsya-sama-soboj.html
primer-otziva-nauchnogo-rukovoditelya.html
primer-pereocenki-zapasov-mestorozhdeniya-neraspredelennogo-fonda-nedr-sibirskoj-platformi.html