diff options
| author | Syndamia <kamen@syndamia.com> | 2024-04-22 17:30:29 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2024-04-22 17:30:29 +0300 |
| commit | f4642325f58172e85b9e41e35f69e8bea46f78c6 (patch) | |
| tree | 038377e89be336cbb91469dd526cebbfcfe02df5 /week09/Exercise1 | |
| parent | f3406754705e508f57768d3d0d8e457ff5b7620c (diff) | |
| download | oop-2023-solutions-f4642325f58172e85b9e41e35f69e8bea46f78c6.tar oop-2023-solutions-f4642325f58172e85b9e41e35f69e8bea46f78c6.tar.gz oop-2023-solutions-f4642325f58172e85b9e41e35f69e8bea46f78c6.zip | |
[w9] Added solutions to ex 1-2
Diffstat (limited to 'week09/Exercise1')
| -rw-r--r-- | week09/Exercise1/Printer.cpp | 50 | ||||
| -rw-r--r-- | week09/Exercise1/Printer.h | 15 |
2 files changed, 65 insertions, 0 deletions
diff --git a/week09/Exercise1/Printer.cpp b/week09/Exercise1/Printer.cpp new file mode 100644 index 0000000..b8e6195 --- /dev/null +++ b/week09/Exercise1/Printer.cpp @@ -0,0 +1,50 @@ +#include "Printer.h" +#include <cstring> + +void Printer::free() { + delete[] model; +} + +void Printer::copyFrom(const Printer& other) { + this->model = new char[strlen(other.model) + 1]; + strcpy(this->model, other.model); + this->printedPages = other.printedPages; +} + +Printer::Printer() { + model = nullptr; + printedPages = 0; +} + +Printer::~Printer() { + free(); +} + +Printer::Printer(const Printer& other) { + copyFrom(other); +} + +Printer& Printer::operator=(const Printer& other) { + if (this != &other) { + free(); + copyFrom(other); + } + return *this; +} + +Printer::Printer(Printer&& other) { + this->model = other.model; + other.model = nullptr; + this->printedPages = other.printedPages; +} + +Printer& Printer::operator=(Printer&& other) { + if (this != &other) { + free(); + + this->model = other.model; + other.model = nullptr; + this->printedPages = other.printedPages; + } + return *this; +} diff --git a/week09/Exercise1/Printer.h b/week09/Exercise1/Printer.h new file mode 100644 index 0000000..52a737e --- /dev/null +++ b/week09/Exercise1/Printer.h @@ -0,0 +1,15 @@ +class Printer { + char* model; + unsigned printedPages; + + void free(); + void copyFrom(const Printer& other); + +public: + Printer(); + ~Printer(); + Printer(const Printer& other); + Printer& operator=(const Printer& other); + Printer(Printer&& other); + Printer& operator=(Printer&& other); +}; |
