具有静态成员的多态对象

时间:2013-10-14 14:15:22

标签: c++

我有一个类(MyClass),它是抽象类的子类。 MyClass有静态成员。 当我删除MyClass对象时,Heap变得腐败,我得到各种内存违规错误。 为什么会这样?是否删除了静态成员?

class CAbstractClass {
public:
  CAbstractClass();
  virtual ~CAbstractClass();
...
}

带有静态成员的MyClass

class MyClass : public AbstractClass {
public:
static short    s_static;
}

我正在使用MyClass :: s_static = 2等设置其值。

静态成员在.cpp文件中初始化

short MyClass::s_static=1;

现在我有一个抽象对象列表,我在其中添加了MyClass(和其他类)的实例。

list<CAbstractClass*>   *objectList;
MyClass *myclassobj=new MyClass();
objectList->push_back(myclassobj);

此列表将被删除

clearAll() {
    CAbstractClass *object;
    std::list<CAbstractClass*>::iterator it;
    for (it=this->objectList->begin(); !(it==this->objectList->end()); it++) {
      object=*it;
      if (object) delete object;
     }
     this->objectList->clear();
}

0 个答案:

没有答案