⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sharedstring.cpp

📁 BigC++的源码
💻 CPP
字号:
#include <iostream>using namespace std;class SharedString {public:   SharedString();   SharedString(const char* right);   SharedString(const SharedString& right);   ~SharedString();   SharedString& operator=(const SharedString&);private:   class StringReference;   StringReference* p;   void reassign(StringReference*);};class SharedString::StringReference {public:   int count;   char* buffer;   StringReference(const char* right);   ~StringReference();};SharedString::SharedString() : p(NULL){   cout << "Entering SharedString() \n";}SharedString::SharedString(const char* right) : p(NULL) {   reassign(new StringReference(right));}SharedString::SharedString(const SharedString& right) : p(NULL){   reassign(right.p);}SharedString::~SharedString(){   reassign(NULL);}SharedString& SharedString::operator=(const SharedString& right){   reassign(right.p);   return *this;}void SharedString::reassign(SharedString::StringReference* np){   if (np != NULL) // Increment count on the new value      np->count += 1;   if (p != NULL)  // Decrement reference counts on old value   {      p->count -= 1;      if (p->count == 0)         delete p;   }   p = np;  // Change binding}SharedString::StringReference::StringReference(const char* right){   count = 0;   int n = 0;   while (right[n] != '\0')      n++;   buffer = new char[1 + n];   for (int i = 0; i < n; i++)      buffer[i] = right[i];   buffer[n] = '\0';}SharedString::StringReference::~StringReference(){   delete[] buffer;}SharedString g; // Global valueint main(){      cout << "starting execution\n";      cout << "SharedString a = \"Fred\";\n";   SharedString a = "Fred";      cout << "SharedString b = \"Alice\";\n";   SharedString b = "Alice";      cout << "SharedString c;\n";   SharedString c;      cout << "c = a;\n";   c = a;      cout << "a = b;\n";   a = b;      cout << "g = b;\n";   g = b;   cout << "return 0;\n";   return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -