gpt4 book ai didi

c++ - 指向空指针

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:25 24 4
gpt4 key购买 nike

这是一种基本知识,但我似乎无法掌握这一点。引用 here

void *pconst void *p 有足够的不同吗?为什么函数会使用 const void * 而不是 void *

最佳答案

完全使用 void* 的原因(无论 const 与否)是它提供的那种通用性。它就像一个基类:所有指针都是 void* 并且可以隐式地转换成它,但是从void* 到类型化指针的转换必须是明确地和手动地完成。

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

当然,这取决于您不使用 C 风格的强制转换,而是使用显式的 C++ 强制转换。从 void* 到任何 T* 的转换需要一个 static_cast,并且这不允许删除 const .因此,您可以使用 static_castconst void* 转换为 const char*,但不能转换为 char*。这将需要一个额外的 const_cast

关于c++ - 指向空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com