From f4642325f58172e85b9e41e35f69e8bea46f78c6 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 22 Apr 2024 17:30:29 +0300 Subject: [w9] Added solutions to ex 1-2 --- week09/Exercise1/Printer.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++ week09/Exercise1/Printer.h | 15 +++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 week09/Exercise1/Printer.cpp create mode 100644 week09/Exercise1/Printer.h (limited to 'week09/Exercise1') 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 + +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); +}; -- cgit v1.2.3