虚拟析构函数
/*虚拟如何影响析构函数调用的顺序。 如果基类中没有虚拟析构函数,则派生的 不会调用类析构函数*/ #包括<iostream> 类颜色{ 公众: virtual~color(){//虚拟析构函数 标准::cout<<“color dtor\n”; } }; 红色类:公共色{ 公众: ~red(){//此析构函数也是虚拟的 标准::cout<<“red dtor\n”; } }; 亮红色类:公共红色{ 公众: ~brightred(){//此析构函数也是虚拟的 标准::cout<<“brightred dtor\n”; } }; 整型main() { 颜色*调色板[3]; 调色板[0]=新红色; 调色板[1]=新亮红色; palette[2]=新颜色; //调用红色和颜色的析构函数。 删除调色板[0]; 标准::cout<<std::endl; //亮红色、红色和颜色的析构函数被称为。 删除调色板[1]; 标准::cout<<std::endl; //调用颜色的析构函数。 删除调色板[2]; 返回0; }
红色dtor 彩色dtor 亮dtor 红色dtor 彩色dtor 彩色dtor