#include <iostream> #include <string> using namespace std; class STR{ char *p; public: STR(char *s = 0) { if (s) { p = new char[strlen(s) + 1]; strcpy(p, s); } } void set(char *s = 0) { if (p) delete []p; if (s) { p = new char[strlen(s) + 1]; strcpy(p, s); } else p = 0; } void join(char *s) { int n1 = strlen(p), n2 = strlen(s); char *p0 = new char[n1 + n2 + 1], *p1 = p0, *p2 = p; while (*p1++ = *p2++); p1--; p2 = s; while (*p1++ = *p2++); delete []p; p = new char[n1 + n2 + 1]; p1 = p; p2 = p0; while (*p1++ = *p2++); delete []p0; } void backward() { char *p1 = p, *p2 = p; while (*p2++); p2 -= 2; while (p1<p2) { char t = *p1; *p1 = *p2; *p2 = t; p1++; p2--; } } ~STR() { if (p) delete []p; } void print() { if (p) cout << p << endl; } }; void main() { STR st1("12345"); st1.print(); st1.set("abcde"); st1.print(); st1.join("12345"); st1.print(); st1.backward(); st1.print(); }
请问【实现插入功能的函数join】要怎么理解?可以解释一下吗?
相关分类