标签:
1 Brass * p_test[2]; 2 p_test[0] = new Brass(x); 3 p_test[1] = new BrassPlus(y); 4 delete p_test[0]; 5 delete p_test[1];
p_test[0] 和 p_test[1] 都是Brass * 类型,如果析构函数不是虚的,那么上面的两个delete都回调用Brass类的析构函数。但p_test[1]是指向派生类的阿,运用基类析构函数消灭派生类对象肯定是不对的。
如果将基类析构函数声明为虚就不一样了!它会自动为p_test[1] 调用BrassPlus的析构函数!!!是不是有点智能的味道???虚方法的魅力无限!
标签:
原文地址:http://www.cnblogs.com/busui/p/5801146.html