这对时间和空间至关重要,所以我真的需要它是最小的.
编译器抱怨缺少虚拟析构函数,我理解,因为如果你分配一个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();}总结
以上是内存溢出为你收集整理的c – 任何阻止动态分配类的方法?全部内容,希望文章能够帮你解决c – 任何阻止动态分配类的方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)