Jas*_*n S 7 c++ dynamic-allocation
我在我的嵌入式系统中使用了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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |