gpt4 book ai didi

c++ - 为什么非常量指针上的 const Ref 被解释为 const 指针?

转载 作者:行者123 更新时间:2023-11-30 01:12:01 26 4
gpt4 key购买 nike

为什么 const PointerToNonConst& value 对于下面的代码被理解为 A* const:

using PointerToNonConst = A*; // or typedef A* PointerToNonConst;
const PointerToNonConst& value; // compiled and understood as `A* const`

我原以为它是只读指针而不是常量指针。

顺便说一句,这是一个用例,为什么您可能会在代码中遇到这个问题:

class A
{
public:
void callOnNonConstMethodIsValid()
{
// change the object here
}
}

std::vector<A*> vect;

for (const auto& elem : vect)
{
elem->callOnNonConstMethodIsValid(); // no error
}

最佳答案

typedefusing 不像#define。它不是文本替换。当您使用 typedefusing 创建类型别名时,该名称将被视为一个单元。当您将 const 应用于它时,它会将类型作为一个整体应用于顶层。您不能将它应用于该类型的内部组件。

关于c++ - 为什么非常量指针上的 const Ref 被解释为 const 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892798/

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