• C++类继承--构造函数时先构造基类


    以下说明继承类函数构造时,先构造基类;

    析构基类时,若没加上virtual,只析构基类,不析构派生类;

    析构派生类时,同时会析构基类;

    1. 基类析构函数有virtual

    #include <stdio.h>
    
    class Base
    {
    public:
    	int a;
    	Base(){
    		a=0;
    		printf("base construct
    ");
    	}
    	virtual ~Base(){
    		printf("base delete
    ");
    	}
    
    	
    	virtual void setA()=0;
    	
    };
    
    class A:public Base
    {
    public:
    	A(){
    		a = 10;
    		printf("A construct
    ");
    	}
    	~A(){
    		printf("A class delete
    ");
    	}
    	virtual void setA()
    	{
    		a = 2;
    	}
    };
    
    int main()
    {
    	
    	Base *x = new A();
    	A *aClass = new A();
    	
    	delete x;
    	printf("---------------
    ");
    	delete aClass;
    	
    	return 0;
    }
    

    运行结果:

    2. 基类析构函数无virtual

    class Base
    {
    public:
    	int a;
    	Base(){
    		a=0;
    		printf("base construct
    ");
    	}
    	~Base(){
    		printf("base delete
    ");
    	}
    	virtual void setA()=0;
    };
    

      运行结果为:

      

  • 相关阅读:
    【算法】 冒泡排序
    【算法】 插入排序
    【算法】 斐波那契数列
    【C#】 RBAC 权限框架
    【jQuery】 实用 js
    【jQuery】 Ajax
    【jQuery】 常用函数
    【jQuery】 资料
    【jQuery】 效果
    Linaro/Yocto/Openwrt
  • 原文地址:https://www.cnblogs.com/anlia/p/9084294.html
Copyright © 2020-2023  润新知