gpt4 book ai didi

c++ - C 和 C++ 中 void 指针的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:33 25 4
gpt4 key购买 nike

为什么以下在 C++ 中是错误的(但在 C 中有效)

void*p;
char*s;
p=s;
s=p; //this is wrong ,should do s=(char*)p;

为什么我需要转换,因为 p 现在包含 char 指针的地址并且 s 也是 char 指针?

最佳答案

这是有效的 C,但不是 C++;它们是两种不同的语言,即使它们确实有许多共同点。

在 C++ 中,没有从 void* 到类型化指针的隐式转换,因此您需要进行强制转换。您应该更喜欢 C++ 转换,因为它们限制了允许的转换,因此有助于防止错误:

s = static_cast<char*>(p);

更好的是,您应该首先使用多态技术(例如抽象基类或模板)来避免使用无类型指针;但这超出了这个问题的范围。

关于c++ - C 和 C++ 中 void 指针的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833902/

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