classa
[
a〔〕;
virtual`a〔〕;
]
classb;publica
[
intab;
b〔〕;
virtual`b〔〕;
]
现有;
a*pA=newb[10];
...
delete[]pA;
书上说,delete的时候只会调用a的析构函数,并且传给vec-delete的对象大小也是sizeof[pA]的大小,因此,书上建议不要使用基类 指针指向子类数组。但是我实验的结果是,a和b的析构函数均调用了,因为看不懂汇编,因此vec-delete没有跟到。
请高手做答。
-------------------------------------------------------------
class Base
{
public:
Base()
{
cout<<"Base()"<<endl;
}
virtual ~Base()
{
cout<<"~Base()"<<endl;
}
};
class Child:public Base
{
public:
Child()
{
cout<<"Child()"<<endl;
}
virtual ~Child()
{
cout<<"~Child()"<<endl;
}
};
int main(int argc, char* argv[])
{
Child x;
return 0;
}
分享到:
相关推荐
下面小编就为大家带来一篇浅谈C++ 基类指针和子类指针的相互赋值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
父类引用指向子类对象
下面小编就为大家带来一篇C++ 基类指针和子类指针相互赋值的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
父类引用指向子类对象[归纳].pdf
当基类指针指向子类对象 或者基类引用成为子类对象的别名 时,就需要使用类型识别; Base *p = new Derived(); Base &r = *p 对于上面的语句,我们可以这样认识,指针p是Base类型,但是P 又指向了一个新的Derived...
java 子类对象赋值给父类对象的使用,包括代码及详解,个人笔记
虚析构:将可能被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。如果基类的析构函数不是虚函数,在特定情况...
8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java...
在虚函数的基类与子类构造函数中调用虚函数。当生成子类对象时,函数的调用顺序是怎样的
因为子类中有一个隐藏的引用super会指向父类实例,所以在实例化子类之前会先实例化一个父类,也就是说会先执行父类的构造方法,由于s中包含了父类的实例,所以s可以调用父类的方法。 下面我们来看一下代码:
定义一个Person类、一个Student子类和一个Professor子类,要求: ...3)在基类中定义虚函数print(),通过基类指针分别调用person类、Student类、Professor类对象中的print(),使其输出各个对象的属性。
此例子介绍了c#中,父类可以代替子类做很多事情。 此例适合初学者。
javascript与dom有许多瑕疵,如著名的类数组对象Arguments,其他诸如HTMLCollection,NodeList如果它们都是数组的子类,那多省时啊。
视频基类VideoClip子类DataVideoClip、UpdatedVideoClip、ImageClip、ColorClip、TextClip及使用案例.rar
父类引用指向子类对象时,没法调用子类特有的方法; 父类引用指向子类对象: java中子类强转父类,实际上依然是子类; 该引用只能调用父类中定义的方法和变量; 如果子类中重写了父类中的一个方法,那么在...
虚函数是在基类定义,然后子类重写这个函数后,基类的指针指向子类的对象,可以调用这个函数,这个函数同时保留这子类重写的功能。 纯虚函数是可以不用在基类定义,只需要声明就可以了,然后因为是纯虚函数,是不能...
基类与派生类对象之间有赋值兼容关系,由于派生类中包含从基类继承的成员,因此可以将派生类的值赋给基类对象,在用到基类对象的时候可以用其子类对象代替。 具体表现在以下几个方面: 派生类对象可以向基类对象赋值...