【发布时间】:2011-02-06 11:44:42
【问题描述】:
我一直在阅读 StackOverflow 并开始怀疑我曾经编写的所有代码,我一直在想“这是未定义的行为吗?”即使在已经运行了很长时间的代码中也是如此。
所以我的问题 - 将指向对象(在本例中为抽象接口类)的指针转换为 void* 然后将它们转换回原始类并使用它们调用方法是否安全且定义明确?
我完全清楚执行此操作的代码可能很糟糕。我现在什至不会考虑这样写(这是我真的不想更改的旧代码),所以我不是在寻找更好的方法来做这件事的讨论。如果我再次这样做,我已经知道如何写得更好。但是,如果在 C++ 中依赖它确实被破坏了,那么我将不得不考虑更改代码,如果它只是糟糕的代码,那么更改它就不会是优先事项。
一两年前我对这么简单的事情毫无疑问,但随着我对 C++ 理解的加深,我发现我越来越担心代码在标准下是否安全,即使它运行良好。有时读取过多的堆栈溢出可能对生产力不利:P
【问题讨论】: