顶层和底层的翻译很容易让人误解为就只有两层,实际上当然是不是的。首先我们假设有这样的代码:
template<typename T> using Const = const T; template<typename T> using Ptr = T*;
然后
const int *** const shit = nullptr;
要怎么看呢?很简单,不要用const和*,用Const和Ptr来表达,马上明白:
Const<Ptr<Ptr<Ptr<Const<int>>>>> shit = nullptr;
一秒学会
作者:vczh
链接:https://www.zhihu.com/question/24785843/answer/238903938
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
加上自己的理解,这种const T ***** p 或者 T***const *p 怎么理解?
从右往左,分别是最上和最底。
比如const T*** 表示的是 一个指针的指针的指针,指向的是什么呢,是一个const T。
而 T****const * 表示的是什么,一个指针指向了一个不能更改指向的指针。这个指针指向的是什么呢?是一层层最终到T的。T是可改的。