C++ 变量判定的螺旋法则
| C++ 中一個標識符配合著各種修飾界定符,使得標識符的本意不那么直觀一眼就能看出,甚至需要仔細分析,才能知道該標識符的具體你含義。 比如: void (*signal(int, void (*fp)(int)))(int);其中 signal 是什么? 螺旋法則對于如何進行變量的辯識,有個非官方的 “順時針/螺旋法則(Clockwise/Spiral Rule)” 可用來幫助辯識。 該法則的內容,簡單來說,為了搞清楚一個未知標識符的含義,我們可以:
實地演練一個簡單的示例先從一個簡單的開始,判定如下語句中 str 的含義: +-------+| +-+ || ^ | |char *str[10];^ ^ | || +---+ |+-----------+根據螺旋法則,如上面線圖標識所示,
進階回到文章開頭那個語句,來判定其中 signal 的含義。 +-----------------------------+| +---+ || +---+ |+-+| || ^ | |^ || |void (*signal(int, void (*fp)(int)))(int);^ ^ | ^ ^ || || +------+ | +--+| || +--------+ |+----------------------------------+由螺旋法則畫出如上的線圖,進而可分析:
最后捋一下 signal 的完整類型為:接收一個 int,一個指向接收一個 int 并且返回值為空的函數的指針,這兩個參數的函數,并且返回值為指向一個接收 int 型返回為空的函數...Orz。 成員函數的判定螺旋施法沒有給出在 const 參與的情況下的判定,不過因為 const 默認修飾緊鄰其左邊的元素,如果右邊無元素,則修飾左邊的元素。因此只需要將 const 和它修飾的元素作為整體來看,就還是可以使用螺旋法則的。 考察如下語句: const int*const Method3(const int*const&) const;當函數后面緊跟一個 const 時,表示該成員函數的作用域內 *this 是常量,即無法在該函數體內對所類的實體進行修改。 下面對上面的語句進行分析:
相關資源
|
轉載于:https://www.cnblogs.com/Wayou/p/cpp_clockwise_spiral_rule.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C++ 变量判定的螺旋法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: phoenix kerberos 连接配
- 下一篇: JavaScript Map 和 Set