-Wnon-virtual-dtor持有虚函数却不是虚析构

-Wnon-virtual-dtor (C++ and Objective-C++ only)
Warn when a class has virtual functions and an accessible non-virtual destructor itself or in an accessible polymorphic base class, in which case it is possible but unsafe to delete an instance of a derived class through a pointer to the class itself or base class. This warning is automatically enabled if -Weffc++ is specified.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 警告:\ xe2 \ x80 \ x98-werror = \ xe2 \ x80 \ x99参数\ xe2 \ x80 \ x98-werror = non-virtual-dtor \ xe2 \ x80 \ x99不适用于c. ### 回答2: 在C语言中,-werror=non-virtual-dtor不是一个有效的选项。这是因为C语言没有析构函数这个概念,因此这个选项是多余的。析构函数只在C++中有用。 警告出现的原因可能是因为在编译时使用了一些C++选项,而源代码中存在一些不兼容的内容。这些选项可能在编译器中默认开启,因此可能会出现警告。 解决这个问题的方法是检查编译选项并相应地更改它们。如果是在使用类似于Makefile的简单编译器命令行工具中编译代码,则需要手动更改命令行选项。 在Makefile中,可以将编译器命令行中的“-Werror=non-virtual-dtor”选项删除,或者简单地将其替换为“-Wno-non-virtual-dtor”选项。 总之,这个警告是因为选项不适用于C语言。如果遇到这种警告,需要检查编译选项并相应地更改它们,以使其适用于C语言。 ### 回答3: 在C语言中,不存在析构函数的概念,因此使用“-werror=non-virtual-dtor”参数来强制编译器在编译代码时将没有析构函数的类作为警告或错误报告是无效的。 析构函数是用于在删除已分配的对象时,确保正确处理多态类的析构函数。在C++中,析构函数是很常见的,但在C语言中并不支持析构函数。因此,C语言编译器会忽略“-werror=non-virtual-dtor”参数,并将其视为无效参数。 此外,C语言是一种不支持面向对象程序设计的编程语言,因此它不支持类和对象的概念。相反,C语言更注重可移植性和对底层硬件的直接控制。因此,在C语言中使用析构函数的需求也就相应减少了。 总结来说,在C语言中不存在析构函数的概念,因此在编译代码时使用“-werror=non-virtual-dtor”参数是没有意义的。如果想要使用析构函数,应该采用面向对象的编程语言,比如C++

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值