diff options
| author | Syndamia <kamen@syndamia.com> | 2024-04-03 17:47:07 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2024-04-03 17:47:07 +0300 |
| commit | 44d085f265583f0e3cbef294bbe2c8e300aaa452 (patch) | |
| tree | 4899165f82a51beca1d4726db441a2749b628b9f /week06/Exercise02.cpp | |
| parent | 6a8154ad7f2cbfbb2ae4f2ddda1cd0db0e430e44 (diff) | |
| download | oop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.tar oop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.tar.gz oop-2023-solutions-44d085f265583f0e3cbef294bbe2c8e300aaa452.zip | |
[w6] Added exercise descriptions and solutions to 1-9
Diffstat (limited to 'week06/Exercise02.cpp')
| -rw-r--r-- | week06/Exercise02.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/week06/Exercise02.cpp b/week06/Exercise02.cpp new file mode 100644 index 0000000..63daeac --- /dev/null +++ b/week06/Exercise02.cpp @@ -0,0 +1,35 @@ +#include <cstring> + +struct DynamicString { +private: + char* str; + unsigned size; + + void free() { + delete[] str; + } + void copyFrom(const DynamicString& other) { + this->str = new char[other.size]; + strcpy(this->str, other.str); + this->size = other.size; + } + +public: + DynamicString() { + str = nullptr; + size = 0; + } + ~DynamicString() { + free(); + } + DynamicString(const DynamicString& other) { + copyFrom(other); + } + DynamicString& operator=(const DynamicString& other) { + if (this != &other) { + free(); + copyFrom(other); + } + return *this; + } +}; |
