C++ 什么是命名转换等价物

标签 c++ casting

以下旧式转换的命名转换等效项是什么?

const string *ps;
void *pv;

pv = (void*)ps; // <--- this

pv = static_cast<void*>(const_cast<string*>(ps));吗?

最佳答案

pv = const_cast<string *>(ps);

足够好 - void * 可以 任何(非限定)数据(对象)指针类型隐式分配。

(当然,出于同样的原因,直接赋值给 const void * 而不进行任何转换 是可行的。)

关于C++ 什么是命名转换等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858705/

相关文章:

c++ - 如何消除在 switch case 中使用 goto

c++ - 尝试使用多维数组指针

c++ - 将 C 字符串转换为 unsigned char 指针

c# - 将 IEnumerable<T> 转换/转换为 IEnumerable<U>?

c++ - 为什么我的矩阵旋转没有通过我学校的单元测试?

CR+LF 与 LF 和 CR 之间的 C++ stdin 和 stdout 转换

c++ - boost signals2 重复的变量名

c++ - 对重载的模糊调用 - 强制转换

c++ - 从 ‘const char*’ 到 ‘unsigned char*’ 的无效转换

java - 将类转换为不相关的接口(interface)