指向void的指针

Chu*_*dad 1 c++ pointers void

这是基本的,但我似乎无法控制这个.参考这里

void *pconst void *p完全不同?为什么函数会用const void *而不是void *

sbi*_*sbi 6

完全使用void*(无论是否const)的原因是它提供的通用性.它就像一个基类:所有指针 void*可以隐式地转换为它,但是void*必须明确地手动完成对类型指针的强制转换.

通常,C++有更好的方法来提供这个(即OO和模板),所以它根本没有多大意义void*,除非你正在连接C.但是,如果你使用它,那么const提供什么它提供在其他地方:你需要一个(额外的)const_cast能够改变所引用的对象,所以你不太可能意外地改变它.

当然,这取决于你不使用C风格的演员表,而是使用显式的C++演员表.从void*任何T*一个演员要求a static_cast,这不允许删除const.所以你可以投射const void*const char*使用static_cast,但不是char*.这需要额外的const_cast.

  • 我相信从`void*`到`T*`的转换需要`static_cast`.`reinterpret_cast`始终是实现定义的,应该避免. (2认同)