Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / Solutions Sem. 08 / ex3 / DynStr.cpp
diff options
context:
space:
mode:
Commit9829b368ce529df277397e3b465fc536fa65ebfd (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-04-14 23:53:14 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-04-14 23:53:14 +0300
Files502a0f1a061a4177e7117118ba2f3164f993ef63 /Year 1/Object-oriented Programming/Solutions Sem. 08/ex3/DynStr.cpp
uni-projects-9829b368ce529df277397e3b465fc536fa65ebfd.tar
uni-projects-9829b368ce529df277397e3b465fc536fa65ebfd.tar.gz
uni-projects-9829b368ce529df277397e3b465fc536fa65ebfd.zip
Parent27cf6165d0592f842ed667a8da3013489213c2a1 (diff)
Implemented (broken) overall functionality of ex3 of sem 08
1 files changed, 50 insertions, 0 deletions
-rw-r--r--Year 1/Object-oriented Programming/Solutions Sem. 08/ex3/DynStr.cpp50
diff --git a/Year 1/Object-oriented Programming/Solutions Sem. 08/ex3/DynStr.cpp b/Year 1/Object-oriented Programming/Solutions Sem. 08/ex3/DynStr.cpp
new file mode 100644
index 0000000..4f4d52e
--- /dev/null
+++ b/Year 1/Object-oriented Programming/Solutions Sem. 08/ex3/DynStr.cpp
@@ -0,0 +1,50 @@
+#include "DynStr.h"
+#include <cstring>
+
+/* Private */
+
+void DynStr::free() {
+ if(str != nullptr) delete[] str;
+}
+
+void DynStr::copyFrom(const DynStr& other) {
+ length = other.length;
+
+ str = new char[length];
+ for (int i = 0; i < length; i++)
+ str[i] = other.str[i];
+}
+
+/* Public */
+
+DynStr::DynStr() {
+ str = nullptr;
+ length = 0;
+}
+
+DynStr::DynStr(const char* str) {
+ int strLen = strlen(str);
+ this->str = new char[strLen];
+ strcpy(this->str, str);
+ length = strLen;
+}
+
+DynStr::DynStr(const DynStr& copy) {
+ copyFrom(copy);
+}
+
+DynStr& DynStr::operator=(const DynStr& other) {
+ if (this != &other) {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+DynStr::~DynStr() {
+ free();
+}
+
+const char* DynStr::get_str() const {
+ return str;
+}