C++中void指针的缺点

Dan*_*nny 3 c++ pointers void

据我所知,C++中的void指针void*可以指向任何东西.如果我想在不使用某种继承的情况下开发解决方案,这对我来说可能非常有用.但我想知道的问题是这种方法是否存在任何性能缺陷?

Gav*_*n H 9

最大的缺点是使用void指针会阻止编译器强制执行类型检查.特别是在支持面向对象原则的语言中,我认为大量使用void指针会很奇怪.

您更有可能在C中找到虚拟指针以模仿某些多态行为,但存在相同的类型安全问题.


Jam*_*nze 5

有两个严重的性能缺点void*.首先,它使得理解和维护程序变得更加困难,这对维护程序员的性能和运行时间产生了严重影响,因为当分析器显示您的位置时,它会使软件的重新加工变得更加困难有性能问题.最快的程序是首先写得很好的程序,因为它可以在关键位置进行局部优化,而不必重写整个程序.

第二个性能影响是a void*可以别名.正确的别名分析是编译器优化的一个重要部分,你做的任何事情都会使优化器更加困难,并且会导致代码变慢.(char*unsigned char*有类似的效果.)