string类构造函数、拷贝构造函数、赋值运算符重载函数 模拟实现

#define _CRT_SECURE_NO_WARNINGS
#include
#include 
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;
}

你可能感兴趣的:(c++,算法,开发语言)