码片段找错
谁能帮忙详细解释一下(会引起什么问题)
下面代码片段不会引起问题的是()
(A)
Wrapper& operator = (Wrapper& obj)
{
if (this->m_pPtr)
delete m_pPtr;
m_pPtr = new int;
*m_pPtr = *obj.m_pPtr;
return *this;
}
(B)
class A
{
public:
virtual void f();
A(){f();};
};
(C)
class A
{
};
class B : public A
{
public:
virtual ~B() { //...}
};
(D)
class A
{
Public:
A(int i = 0) { //...}
}
A* p = new A[100];
delete [] p;
[解决办法]
A没有判断那个参数是否就是自身!如果是自身就会引起错误了。
B在构造函数内调用了动态绑定的函数,错误
C既然B类使用了虚析构函数,那么我觉得A必须也使用虚析构函数。
[解决办法]
Node & operator=(const Node &n) //operator '=' overload { if(this!=&n) { if(name!=0) delete []name; name=new char[strlen(n.name)+1]; strcpy(name, n.name); age=n.age; } return *this; }