首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于delete疏失

2013-01-07 
关于delete出错原本想写个代码试试操作符重载可不可以的,结果除了问题不知道错在哪里了#include iostream

关于delete出错
原本想写个代码试试操作符重载可不可以的,结果除了问题  不知道错在哪里了


#include <iostream>
#include <cstring>

using namespace std;
class Port
{
private:
char *s;
public:
Port();
Port(const char *a);
Port(const Port &a);
virtual ~Port();
Port &operator =(const Port &a);
friend ostream &operator <<(ostream &os, const Port &a);
};

class VinPort:public Port
{
private:
char *p;
public:
VinPort();
VinPort(const char *a, const char *b);
VinPort(const VinPort &a);
virtual ~VinPort();
VinPort &operator =(const VinPort &a);
friend ostream &operator <<(ostream &os, const VinPort &a);
};

Port::Port()
{
s = NULL;
}

Port::Port(const char *a)
{
s = new char[strlen(a)];
strcpy(s, a);
}

Port::Port(const Port &a)
{
s = new char[strlen(a.s)];
strcpy(s, a.s);
}

Port::~Port()
{
delete []s;
}

Port &Port::operator =(const Port &a)
{
if (this == &a)
return *this;

delete []s;
s = new char[strlen(a.s)];
strcpy(s, a.s);

return *this;
}

ostream &operator <<(ostream &os, const Port &a)
{
if (a.s)
os << a.s << endl;
else 
os << "NULL" << endl;
return os;
}

VinPort::VinPort():Port()
{
p = NULL;
}

VinPort::VinPort(const char *a, const char *b):Port(a)
{
p = new char[strlen(b)];
strcpy(p, b);
}

VinPort::VinPort(const VinPort &a):Port(a)
{
p = new char[strlen(a.p)];
strcpy(p, a.p);
}

VinPort::~VinPort()
{
delete []p;
}

VinPort &VinPort::operator =(const VinPort &a)
{
if (this == &a)
return *this;

Port::operator =(a);
delete []p;

p = new char[strlen(a.p)];
strcpy(p, a.p);

return *this;
}

ostream &operator <<(ostream &os, const VinPort &a)
{
os << a;
if (a.p)
os << " " << a.p;
else 
os << " NULL";

return os;
}


int main()
{
Port a("Hello");
Port b;
Port c("World");

cout << a << b << c;
b = a;
c = b;
cout << a << b << c;

VinPort aa("test", "test2");
VinPort bb("aaaa", "bbbb");
VinPort cc;

cout << aa << bb << cc;
cc = aa;
cout << cc;
return 0;
}




就是很简单的一个类 里面是一个字符串 可是在重载=的里面delete时候提示出错
求问为什么 感觉没错啊 难道是const char *的问题么


[解决办法]

热点排行