【c++】淺拷貝成功__count解決

zhaoyaqian552發表於2015-06-05
#include <iostream>
#include <string.h>
using namespace std;

class String
{
public:
	String(const char *str = " ")
	{
		m_data = new char[strlen(str) + 1];
		strcpy(m_data, str);
		count++;
	}
	String(const String &s)
	{
		m_data = s.m_data;
		count++;
	}
	~String()
	{
		//當指標釋放到只剩一個的時候,再釋放就不會崩潰了
		if (--count == 1)
		{
			delete[]m_data;
		}
	}
public:
	void print()
	{
		cout << m_data << endl;
	}
private:
	char *m_data;
	static int count;//定義一個計數器,表示當前空間上有多少個指標指向
};

int String::count = 0;

int main()
{
	String s("hello");
	s.print();
	String s1 = s;
	s1.print();
	return 0;
}




相關文章