我正在阅读Bjarne Stroustrup的C++ FAQ网站。 我看到了以下内容。
为什么
- 避免使用
void*
(如果你确实需要它们,请将它们保留在低级函数和数据结构内,并向用户提供类型安全接口,通常是模板)
void*
在C ++中被认为是不安全的?为什么
- 避免使用
void*
(如果你确实需要它们,请将它们保留在低级函数和数据结构内,并向用户提供类型安全接口,通常是模板)
void*
在C ++中被认为是不安全的?void*
作为数据类型,以便将任何分配的内存放入其中。这样做的不幸之处是允许将不同类型的数据放入同一个容器中。在C++中,通过提供“模板”来解决这个问题,模板可以在编译时创建类型安全的函数和类/结构体实例,从而确保类型正确性。
void*
,你需要在某个时候将其转换回最初指向的任何类型。如果你转换错误,会导致未定义的行为。换句话说,void*
放弃了 类型安全。 - johnvoid*
的问题不应该很明显吗? - πάντα ῥεῖdouble*
),你就会迷失方向。在更复杂的场景中,程序员可能很难选择正确的类型转换。 - πάντα ῥεῖ