我无法理解这种行为。我有一个A类,
class A
{
public:
int ch;
char *s;
A()
{}
A(char *st):ch(0)
{
s = new char[10];
strcpy(s,st);
}
A(const A& rhs):ch(rhs.ch)
{
s = new char[strlen(rhs.s)+1];
strcpy(s,rhs.s);
}
const A& operator=(const A& rhs)
{
char *temp = new char[strlen(rhs.s)+1];
strcpy(temp,rhs.s);
delete[] s;
s=temp;
ch = rhs.ch;
return *this;
}
~A()
{
delete []s;
}
};
到目前为止,一切都按预期进行,我能够测试我的复制构造函数和赋值运算符,它们工作正常。
现在我创建了一个子类 B,我收到了堆损坏错误。我无法理解,这是与 A 类析构函数相关的问题吗?? 下面是我的B班,
class B:public A
{
public:
int a;
B():a(0){}
};