创建对象数组的时候,不要使用继承,因为如果一个数据声明为父类型,但是实际使用子类型创建,那么在删除对象数据的时候,则只会调用父类型的析构函数,而不会调用子类型的析构函数,造成内存泄漏,例如:
class Base
{
public:
Base(){cout << "Base()" <<endl;}
~Base(){cout <<"~base()" <<endl;}
};
class Son:public Base
{
public:
Son(){cout << "Son()"<<endl;}
~Son(){cout << "~Son()" << endl;}
};
void printClass()
{
//Son s[10];
Base *b = new Son[10]; delete[] b;//只会打印出10个~base(),而不会调用~Son()}
发表于 @
2006年06月15日 15:43:00 | | 编辑|
举报| 收藏