gpt4 book ai didi

c++ - 确定指向常量的指针是否指向常量对象?

转载 作者:行者123 更新时间:2023-12-03 10:05:30 25 4
gpt4 key购买 nike

无论如何确定一个指向常量的指针是否指向一个常量对象?

bool is_const_object(const int* p) {
return ???;
}

int main() {
int x = 42;
const int y = 43;
assert(!is_const_object(&x));
assert(is_const_object(&y));
}

最佳答案

不,没有办法。 C++ 不存储有关常量的运行时动态信息。 C++ 不知道函数内的数据是否真的是常量。
在少数情况下,它可以在有限制的情况下完成。

  • 您可以将自己的动态运行时信息添加到每个 const 实例。
  • 您可以破解可执行文件的加载并在内存中按段检测项目。
  • 如果指针指向 constexpr 全局变量并检测到它,您可以小心地将代码编写为 constexpr。
  • 您可以编写一个带有 T* 的模板函数。并检测它是否为常量。

  • 这些都没有做你要求做的事情,但他们做的事情与你要求做的事情相邻,这可能会解决你的真正问题。

    关于c++ - 确定指向常量的指针是否指向常量对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65551813/

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