頂層和底層的翻譯很容易讓人誤解爲就只有兩層,實際上當然是不是的。首先我們假設有這樣的代碼:
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是可改的。