gpt4 book ai didi

c++ - 如何确保一个类没有虚方法?

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:25 25 4
gpt4 key购买 nike

我有一个类,其对象在共享内存中使用。因此,我必须确保它们没有虚方法(当通过 vtable 调用时会导致程序崩溃)。

我想防止任何人不小心添加了违反此要求的虚拟方法。理想情况下,编译器甚至会拒绝编译包含虚拟方法的类。

解决方案不一定需要符合标准,只要能在 Apple 的 gcc-4.2 或 MSVC 上运行就足够了。

我怎样才能做到这一点?

最佳答案

好吧,我真的认为这没有强制执行的意义,但你可以使用 boost type traits' is_polymorphic .

编辑:示例:

#include <iostream>
#include <boost/type_traits.hpp>

struct Base
{
virtual void MyMethod() { std::cout << "My method called."; }
virtual ~Base() {}
};

class Derived : Base
{
virtual void MyMethod() { std::cout << "Derived"; }
};

struct POD
{
int data;
};

int main()
{
std::cout << boost::is_polymorphic<Base>::value << std::endl;
std::cout << boost::is_polymorphic<Derived>::value << std::endl;
std::cout << boost::is_polymorphic<POD>::value << std::endl;
}

//Output is
// 1
// 1
// 0
//

关于c++ - 如何确保一个类没有虚方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3710749/

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