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

原创 2006年06月15日 15:43:00
创建对象数组的时候,不要使用继承,因为如果一个数据声明为父类型,但是实际使用子类型创建,那么在删除对象数据的时候,则只会调用父类型的析构函数,而不会调用子类型的析构函数,造成内存泄漏,例如:
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()
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++中创建对象的时候加括号和不加括号的区别

c++创建对象的语法有----- 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a...

C++中创建对象的时候加括号和不加括号的区别

c++创建对象的语法有—– 1 在栈上创建 MyClass a; 2 在堆上创建加括号 MyClass *a= new MyClass(); 3 不加括号 MyClass *a = new My...

Item 7:当创建对象的时候,区分()和{}的使用

本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 从不同的角度来看,在C++11中,对象初始化拥有多种语法选择,这体现了语法丰富造成的...

在使用Scripting.FileSystemObject 的时候报错automation服务器不能创建对象

在使用Scripting.FileSystemObject 的时候报错automation服务器不能创建对象的解决办法

76、Singleton和prototype分别在什么时候创建对象?(9条)

1——分别在什么时候?2——需要的类3——User.java4——(Singleton)bean.xml5——(Single ton)App(测试类)6——(SIngleton)效果7——(proto...

QTBrowserPlugin在销毁的时候会再次创建对象的问题

在使用qt的browserplugin框架写npapi插件时发现一个奇怪的现象,产生的日志内容一开始还是正确的,在关闭的时候日志突然就变了。遇到这么奇怪的现象,很是郁闷,但是程序不说说谎的,肯定还是某...

iOS字典,数组和集合创建对象的代码

写.m中就可以实现,#if 0 把零改成1,就可以实现,#后面的不是代码内容 #pragma mark - 知识点1 字典类 #pragma mark - 知识点 ** 不可变字典 ...

JAVA学习(8)创建对象数组

JAVA中数组的大小需要用new来分配,数组length属性可获取数组长度1.指定数组大小后分配内存public class Test9{ private String name; p...

如何创建对象的数组

创建对象我们都很熟悉,但是创建对象的数组(也就是相当于创建一个“int”类型的数组,而这个的元素是一个一个的对象)呢?可能在看到我解释的那么多后,你觉得应该是一个道理,但是事实上真的是如此吗?   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)