关闭

C++点滴:创建对象数组的时候,不要使用继承

标签: c++classdelete
1408人阅读 评论(1) 收藏 举报
分类:
创建对象数组的时候,不要使用继承,因为如果一个数据声明为父类型,但是实际使用子类型创建,那么在删除对象数据的时候,则只会调用父类型的析构函数,而不会调用子类型的析构函数,造成内存泄漏,例如:
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()
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:75116次
    • 积分:920
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:59篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论