#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <assert.h>
using namespace std;
class My_string
{
public:
My_string(const char* ptr="")
{
if (ptr == nullptr)
{
ptr = " ";
}
else
{
_ptr = new char[strlen(ptr) + 1];
strcpy(_ptr, ptr);
}
}
My_string(My_string& s)
:_ptr(new char[strlen(s._ptr)+1])
{
strcpy(_ptr, s._ptr);
}
My_string& operator= (My_string& s)
{
if (this != &s)
{
char* temp = new char[strlen(s._ptr )+ 1];
//My_string s=My_string(temp)
strcpy(temp, s._ptr);
delete[] _ptr;
_ptr = temp;
}
return *this;
}
~String()
{
if (_ptr)
{
delete[] _ptr;
_ptr = nullptr;
}
}
private :
char* _ptr;
};
void TestString1()
{
My_string s1("hello"); //构造
My_string s2(s1); //拷贝构造
My_string s3;
s3 = s1;
}
int main()
{
int a;
int* p;
TestString1();
_CrtDumpMemoryLeaks();
return 0;
}
文章评论