OOP HomeWork

This commit is contained in:
e2hang
2025-08-11 00:01:30 +08:00
commit e8a5ca2363
119 changed files with 3187 additions and 0 deletions

74
oop_hw3/hw1/main.cpp Normal file
View File

@@ -0,0 +1,74 @@
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
class MyString {
private:
char* mpData;
public:
MyString(const char* pData = nullptr) {
if (pData == nullptr) {
mpData = new char[1];
mpData[0] = '\0';
}
else {
int len = strlen(pData);
mpData = new char[len + 1];
strcpy(mpData, pData);
}
}
MyString(const MyString& x) {
int len = strlen(x.mpData);
mpData = new char[len + 1];
strcpy(mpData, x.mpData);
}
~MyString() {
delete[] mpData;
}
MyString& operator=(const MyString& x) {
if (this == &x) return *this;
delete[] mpData;
int len = strlen(x.mpData);
mpData = new char[len + 1];
strcpy(mpData, x.mpData);
return *this;
}
MyString& operator+=(const MyString& x) {
int len = strlen(mpData) + strlen(x.mpData);
char* tmp = new char[len + 1];
strcpy(tmp, mpData);
strcat(tmp, x.mpData);
delete[] mpData;
mpData = tmp;
return *this;
}
friend const MyString operator+(const MyString& x, const MyString& y) {
int len = strlen(x.mpData) + strlen(y.mpData);
char* tmp = new char[len + 1];
strcpy(tmp, x.mpData);
strcat(tmp, y.mpData);
MyString r(tmp);
delete[] tmp;
return r;
}
friend ostream& operator<<(ostream& os, const MyString& x) {
os << x.mpData;
return os;
}
};
int main() {
char p[] = "Hello, world!";
char q[] = "What are you doing?";
char r[] = "How are you!";
MyString a(p), b, c;
b = MyString(q);
c = b;
MyString d;
d = a + b;
cout << d << endl;
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB