zoukankan      html  css  js  c++  java
  • C++里父类的析构函数为什么声明为virtual

    #include<iostream>
    using namespace std;
    class Base
    {
    public:
    	Base(){}
    	virtual ~Base(){}  //基类的析构函数应该声明为虚析构函数。
    	virtual void  Test(){cout<<"Base Test"<<endl;}
    };
    class Derived:public Base
    {
    public:
    	Derived(){}
    	~Derived(){cout<<"delete Derived"<<endl;}
    	void Test(){cout<<"Derived Test"<<endl;}
    };
    void main()
    { 
    	Base* pBase=new Derived();  //父类的指针指向派生类的对象。
    	pBase->Test();
    	delete pBase; //如果没有Base基类的析构函数没有声明为virtual,是不会执行到子类的析构函数的。
    	              //所以将父类的析构函数声明为虚函数,作用是用父类的指针删除一个派生类对象时,派生类对象的析构函数会被调用。
    }

    将父类的析构函数声明为virtual是为了删除父类指针时可以调用到子类的析构函数。

  • 相关阅读:
    【02】AJAX XMLHttpRequest对象
    【01】什么是AJAX
    NPM是什么
    nodejs npm常用命令
    angular(转)
    s6 传输层
    s6-9 TCP 定时器
    s6-8 TCP 拥塞控制
    s6-7 TCP 传输策略
    s6-6 TCP 连接释放
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3095681.html
Copyright © 2011-2022 走看看