#include "String.h" #include void String::copyFrom(const String& other) { length = other.length; str = new char[length + 1]; strncpy(str, other.str, length + 1); } void String::free() { delete[] str; } String::String(const char* str) { length = strlen(str); this->str = new char[length + 1]; strncpy(this->str, str, length + 1); } String::String() : String("") {} String::String(const String& other) { copyFrom(other); } String& String::operator=(const String& other) { if (this != &other) { free(); copyFrom(other); } return *this; } String::~String() { free(); } std::ostream& operator<<(std::ostream& ostr, const String& str) { return ostr << str.str; }