读书人

码片段找错解决思路

发布时间: 2012-05-22 18:18:54 作者: rapoo

码片段找错
谁能帮忙详细解释一下(会引起什么问题)

下面代码片段不会引起问题的是()
(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() { //...}
};
—)
class A
{
Public:
A(int i = 0) { //...}
}
A* p = new A[100];
delete [] p;


[解决办法]
A没有判断那个参数是否就是自身!如果是自身就会引起错误了。
B在构造函数内调用了动态绑定的函数,错误
C既然B类使用了虚析构函数,那么我觉得A必须也使用虚析构函数。

[解决办法]

C/C++ code
  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;    } 

读书人网 >C++

热点推荐