String str1,str2;這句執行完後,p指針都指向NULL。
緊接著就執行了str1.Input_Data(&str1);,裏面只有壹行
cin>>p1->p;這是把數據寫入NULL是非法的。
最簡單的解決方案是,創建對象的時候為p指針分配足夠大的儲存空間。另外為了避免內存泄漏,應該在銷毀對象的時候釋放p所指的空間。
所以類定義的前幾行改成
{
public:
String(){p=new?char?[100];}//構造函數讓p能容納100個字符
~String()?{delete?[]?p;}//我加上的析構函數
其它代碼不變,對於妳的這個問題應該是夠用了,但還有其它BUG,比如當輸入兩個字符串相同的時候顯示二者並不相等,這些問題請樓主繼續DEBUG吧,我就只解決這個程序完成不能運行的問題吧,如果需要,繼續追問。