From 112a0d344da9e66d20ee9ab5d488e59c5d52e6ad Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Thu, 9 Apr 2020 18:09:42 +0300 Subject: added new examples --- Big4_basic_examples/TestClass/TestClass.cpp | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Big4_basic_examples/TestClass/TestClass.cpp (limited to 'Big4_basic_examples/TestClass/TestClass.cpp') diff --git a/Big4_basic_examples/TestClass/TestClass.cpp b/Big4_basic_examples/TestClass/TestClass.cpp new file mode 100644 index 0000000..fe5692b --- /dev/null +++ b/Big4_basic_examples/TestClass/TestClass.cpp @@ -0,0 +1,45 @@ +#include "TestClass.h" + + +TestClass::TestClass() : TestClass(0, 0, "Unknown") +{ + +} +TestClass::TestClass(int a, int b, const char* str) +{ + this->a = a; + this->b = b; + name = new char[strlen(str) + 1]; + strcpy(name, str); +} +TestClass::TestClass(const TestClass& other) +{ + CopyFrom(other); + //name = other.name NO! only the pointer will be copied. +} + +TestClass& TestClass::operator=(const TestClass& other) +{ + if (this != &other) + { + Free(); + CopyFrom(other); + } + return *this; // this TestClass* +} +TestClass::~TestClass() +{ + Free(); +} +void TestClass::CopyFrom(const TestClass& other) +{ + name = new char[strlen(other.name) + 1]; + strcpy(name, other.name); + a = other.a; + b = other.b; +} +void TestClass::Free() +{ + delete[] name; + a = b = 0; +} -- cgit v1.3.1-23-gd82d