析构函数在C ++ [英] destructor in C++

查看:239
本文介绍了析构函数在C ++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的AB.h文件中有一个构造函数:

I had a constructor in my AB.h file:

class AB{
private: int i;
public:
AB:i(0){}//constructor
~AB:i(0){} // destructor
virtual void methodA(unsigned int value)=0;};

编译器说:

AB有虚拟函数,但非虚拟析构函数
AB.h:在析构函数'AB ::〜AB()':

AC.h:错误:只有构造函数base initializers

class AB has virtual functions but non-virtual destructor
AB.h: In destructor ‘AB::~AB()’:
AC.h: error: only constructors take base initializers

如果我使用〜AB();析构函数,它说我有虚拟函数,但我没有析构函数,我在哪里误解?
Thankyou

if I use the ~AB(); destructor, it said that i have virtual functions but i didn't have destructor, where did I misunderstand? Thankyou

推荐答案

您收到错误和无关的警告。

You're getting an error and an unrelated warning.

错误是因为您正在为析构函数使用初始值设置,这是没有意义的,且无效的语法。

The error is because you're using an initializer for your destructor, which doesn't make sense and isn't valid syntax.

您要:

~AB() { } // destructor

警告是因为您尚未声明您的析构函数虚拟。 使用虚拟方法的类应该具有虚拟析构函数

The warning is because you haven't declared your destructor virtual. Classes with virtual methods should have virtual destructors:

virtual ~AB() { }

这篇关于析构函数在C ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆