Advertisement

当C++中的纯虚析构函数被调用时,其行为有何变化

阅读量:

我昨天前往XX公司进行了面试,在面试过程中,面试官提出了一个问题:关于C++中当使用子类对象来初始化父类指针时,在析构过程中,虚拟函数与非虚拟函数之间存在什么区别呢?后来我意识到自己在那次回答中存在不足,并且通过在机器上实际操作加深了对这一概念的理解。之后我将这次经验记录下来,并确保以后遇到类似问题时不犯同样的错误。

首先让我们从最基本的情况开始探讨。教材中通常会讲解的。析构函数不采用虚析构的方式,在子类中正常情况下直接定义对象。

复制代码
 class student

    
 {
    
 public:
    
 	int *m_pInt;
    
 	student()
    
 	{
    
 		m_pInt = new int[10];   //1
    
 		memset(m_pInt, 0, 10*4);
    
 	}
    
  
    
 	~student()
    
 	{				//3
    
 		delete []m_pInt;
    
 	}
    
  
    
 };
    
  
    
 class GradeOneStue:public student
    
 {
    
 public:
    
 	int m_iNum;
    
 	GradeOneStue()			
    

全部评论 (0)

还没有任何评论哟~