gpt4 book ai didi

c++ - 检查类是否有一个空的析构函数

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:27 26 4
gpt4 key购买 nike

假设我有这样一个类:

struct A {
public:
A(int a, int c): a_(a+c), c_(a-c) { }
A(const A& arg): a_(arg.a_), c_(arg.c_) { }
int a_;
char c_;
};

此类的对象位于一些动态分配的内存区域中。在释放此内存区域期间不应调用析构函数。所以我想确定 A destructor 真的是空的。例如,如果有人将 std::string s_; 成员添加到类 A 中,那么如果不调用析构函数,则显然是内存泄漏。

如果 A 中没有构造函数和复制构造函数,那么我可以添加检查:

 static_assert(std::is_trivial<A>::value)

但对于 A 类,它将失败。

所以我的问题是:我能否在编译时以某种方式检查此类的析构函数是否真的是空的并且不做任何工作?

最佳答案

这就是 std::is_trivially_destructible 用于:

std::is_trivially_destructible<A>::value

确保#include <type_traits> .

关于c++ - 检查类是否有一个空的析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com