c – 任何阻止动态分配类的方法?

前端之家收集整理的这篇文章主要介绍了c – 任何阻止动态分配类的方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的嵌入式系统中使用了一个C基类和子类(为了清楚起见,我们称之为A和B).

这对时间和空间至关重要,所以我真的需要它是最小的.

编译器抱怨缺少虚拟析构函数,我理解,因为如果你分配一个B *然后删除指针作为A *的一个实例,这会让你陷入麻烦.

但是我永远不会分配这个类的任何实例.有没有一种方法可以重载operator new(),如果没有任何类的动态分配,它会编译,但如果最终用户尝试分配A或B的新实例,会导致编译器错误

我正在寻找一种类似于通过私有构造函数“中毒”自动编译器拷贝构造函数的常用技术的方法. (例如http://channel9.msdn.com/Forums/TechOff/252214-Private-copy-constructor-and-private-operator-C)

解决方法

您可以使用与复制构造函数相同的方式来解除operator new.请确保不要毒害新的位置.虚拟析构函数仍然是一个很好的推荐.
int main() {
    char data[sizeof(Derived)];
    if (condition)
        new (data) Derived();
    else
        new (data) Base();
    Base* ptr = reinterpret_cast<Base*>(&data[0]);
    ptr->~Base();
}
原文链接:https://www.f2er.com/c/118898.html

猜你在找的C&C++相关文章