From be9dc71f94c40127657723e2881b9929c297a736 Mon Sep 17 00:00:00 2001 From: angeld55 Date: Fri, 14 May 2021 14:21:20 +0300 Subject: sem 12 --- Sem. 12/task1/Drinks/Drink.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Sem. 12/task1/Drinks/Drink.cpp (limited to 'Sem. 12/task1/Drinks/Drink.cpp') diff --git a/Sem. 12/task1/Drinks/Drink.cpp b/Sem. 12/task1/Drinks/Drink.cpp new file mode 100644 index 0000000..6f41b55 --- /dev/null +++ b/Sem. 12/task1/Drinks/Drink.cpp @@ -0,0 +1,68 @@ +#include "Drink.h" +#include + +Drink::Drink() : Drink("Unknown", 0) +{} +const char* Drink::getName() const +{ + return name; +} +int Drink::getMl() const +{ + return ml; +} + +void Drink::setName(const char* name) +{ + delete[] this->name; + + this->name = new char[strlen(name) + 1]; + strcpy(this->name, name); + +} +void Drink::setMl(int ml) +{ + const int MAX_ML = 1000; + const int MIN_ML = 100; + + ml = MIN_ML; + if (MIN_ML <= ml && ml <= MAX_ML) + this->ml = ml; + +} + +Drink::Drink(const char* name, int ml) : name(nullptr) +{ + setName(name); + setMl(ml); +} + +Drink::Drink(const Drink& other) +{ + copyFrom(other); +} +Drink& Drink::operator = (const Drink& other) +{ + if (this != &other) + { + free(); + copyFrom(other); + } + return *this; +} +Drink::~Drink() +{ + free(); +} +void Drink::copyFrom(const Drink& other) +{ + name = new char[strlen(other.name) + 1]; + strcpy(name, other.name); + + ml = other.ml; +} +void Drink::free() +{ + delete[] name; + ml = 0; +} \ No newline at end of file -- cgit v1.3.1-23-gd82d