64,662
社区成员
发帖
与我相关
我的任务
分享
class FS
{
public:
FS(void);
FS(char* s);
~FS(void);
private:
char* m_buf;
int m_len;
public:
FS operator+(FS f1);
operator char*();
};
FS::FS(char* s)
{
m_len = strlen(s);
m_buf = new char[m_len + 1];
memcpy(m_buf, s, m_len);
m_buf[m_len] = '\0';
}
FS::~FS(void)
{
SAFE_DELETE(m_buf); //第3次析构时出错!此时m_buf="111112222233333"
m_len = 0;
}
FS FS::operator +(FS m)
{
char* ss = new char[this->m_len + m.m_len + 1];
memcpy(ss, this->m_buf, this->m_len);
memcpy(ss + this->m_len, m.m_buf, m_len);
ss[this->m_len + m.m_len] = '\0';
memcpy(this->m_buf, ss, this->m_len + m.m_len + 1);
this->m_len = this->m_len + m.m_len;
return *this;
}
FS::operator char*()
{
return m_buf;
}
FS ss = FS("11111") +"22222" + "33333";
char* ss = FS;