为什么 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
}
最佳答案
typedef
和using
不像#define
。它不是文本替换。当您使用 typedef
或 using
创建类型别名时,该名称将被视为一个单元。当您将 const
应用于它时,它会将类型作为一个整体应用于顶层。您不能将它应用于该类型的内部组件。
关于c++ - 为什么非常量指针上的 const Ref 被解释为 const 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892798/