天天看點

c++解讀複雜的定義式

Thinking   in   C++   裡  作者介紹了一個簡單的方法來解讀複雜的定義式,   稱為right-left   guideline.   簡單的說就是從中間的變量名開始,   按右-左-右-左…的順序來讀.   以這個題目為例:

char   (*(*x())[])()

從x開始: 

1.向右看到(),   x是一個函數定義,   沒有參數; 

2.向左看到*,   x的傳回值是指針; 

3.向右看到[],   指針指向數組; 

4.向左看到*,   數組的元素也是指針; 

5.向右看到(),   指針指向的是函數,   即函數指針,   而且函數沒有參數. 

6.向左看到char,   函數的傳回值是char.

是以,   x是一個沒有參數的函數,   它的傳回值是指向一個數組的指針,   而這個數組的元素是函數指針,   指向的函數沒有參數,   且傳回char.