gpt4 book ai didi

c++ - 为什么我可以将 char* 隐式转换为 const char* 而不是 unsigned char*

转载 作者:行者123 更新时间:2023-12-01 09:50:27 24 4
gpt4 key购买 nike

以下代码片段会产生编译错误:

char a = 'a';
const char* a_ = &a;
unsigned char b = 'b';
const char* b_ = &b;

最后一行产生错误:

error: invalid conversion from 'unsigned char*' to 'const char*'

我可以从 char* 隐式转换为 const char*,但我不能对 unsigned char* 做同样的事情?这背后的原因是什么?

最佳答案

您可以为指针添加常量。这是允许的,因为它既有用又安全。

但除此之外,您不能随意更改受指对象的类型。

你说“我有一个指向 char 的指针,嘿,就在这里,糟糕,不,它是一个 unsigned char”,如果没有C 风格的“强制”转换或 reinterpret_cast

这是正确的代码:

char a = 'a';
const char* a_ = &a;
unsigned char b = 'b';
const unsigned char* b_ = &b; // (added "unsigned" here)

关于c++ - 为什么我可以将 char* 隐式转换为 const char* 而不是 unsigned char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768640/

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