#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; }
原文:http://blog.csdn.net/zhaoyaqian552/article/details/46380387