64,661
社区成员
发帖
与我相关
我的任务
分享
using namespace std;
#include <iostream>
using namespace std;
class String
{
public:
String( const char * = 0 );
String& operator=(const char*);
private:
int _size;
char *_string;
};
String& String::operator = (const char *pi)
{
cout<<"haha"<<endl;
system("pause");
_size=0;
const char* pt=pi;
while(*pt++)
_size++;
_string=new char[_size+1];
char *str=_string;
while(*str++=*pi++);
return *this;
}
String::String(const char *pi)
{
if(!pi)
{
_size=0;
_string=0;
}
else
{
_size=0;
const char *pt=pi;
while(*pt++)
_size++;
cout<<_size<<endl;
_string=new char[_size + 1];
char *st = _string;
while(*st++ = *pi++);
//delete []_string;
}
}
void main()
{
String ab="hello,the world";
char *c="gogogoog";
ab = c;
}
String::String(const char *pi)
{
if(!pi)
{
_size=0;
_string=0;
}
else
{
_size=0;
const char *pt=pi;
while(*pt++)
_size++;
cout<<_size<<endl;
_string=new char[_size];
char *st = _string;
while(*st++ = *pi++); // 这一句内存访问越界了,将_string后面一个字节的内存置为了'\0'
delete []_string;
}
}