猿问

C++作业中有个实现插入功能的函数不大理解,可以解释一下吗?谢谢

#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】要怎么理解?可以解释一下吗?

皆凡人
浏览 911回答 1
1回答
随时随地看视频慕课网APP
我要回答