Advertisement

记录遇到过的一个坑:C++基类析构函数被错误地写成虚函数

阅读量:

之前写了一个C++的程序,类似于是这样的框架:

复制代码
 #include<iostream>

    
 using namespace std;
    
  
    
 class BaseClass{
    
 public:
    
 	virtual void output(){
    
 		cout<<"BaseClass"<<endl;
    
 	}
    
 };
    
  
    
 class DerivedClass:public BaseClass{
    
 public:
    
 	virtual void output(){
    
 		cout<<"DerivedClass"<<endl;
    
 	}
    
 };
    
 int main(){
    
 	BaseClass *p=new DerivedClass();
    
 	p->output();
    
 	delete p;
    
 	return 0;
    
 }

在编译过程中遇到了这样一个 warning;删除具有非虚构造器的对象可能会导致不确定的行为

简而言之,在我的代码中我创建了一个子类实例,并通过基类指针引用该子类实例。当我对基类对象执行delete操作时会触发一个警告信息。这表明BaseCla

全部评论 (0)

还没有任何评论哟~