【问题标题】:In C++ Is there a (new) way to test if a class has a virtual destructor in a template without instantiating an instance?在 C++ 中是否有一种(新的)方法来测试一个类是否在模板中具有虚拟析构函数而不实例化实例?
【发布时间】:2019-02-18 01:50:07
【问题描述】:

我做了一些环顾四周,许多讨论说“不,你不能这样做”,但这一切都在快速发展,我想在一个无法访问指向指针的模板中测试这个特性对象的实例。

【问题讨论】:

标签: c++ polymorphism


【解决方案1】:

对于 C++11 或更高版本,std::has_virtual_destructor<T> 模板提供此信息。

【讨论】:

  • 特征标题中有很多好东西。回答了很多问题:) 一个推论的问题可能是,如果一个对象有一个虚拟析构函数,所有带有虚拟析构函数的对象都将它们保持在第一个 vtable 中的同一个位置,所以在不知道指针来自哪个基类的情况下可以调用它只知道指针 (void *) 以及模板测试是否(它知道基类在创建时是否为真)同样也可能适用于调用任何需要 vtable 的 RTTI 调用。在场。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 2022-01-14
  • 1970-01-01
  • 2016-08-19
  • 2018-05-16
  • 1970-01-01
相关资源
最近更新 更多