C++ 变量判定的螺旋法则
C++ 中一个标识符配合着各种修饰界定符,使得标识符的本意不那么直观一眼就能看出,甚至需要仔细分析,才能知道该标识符的具体你含义。 比如: void (*signal(int, void (*fp)(int)))(int); 其中 螺旋法则对于如何进行变量的辩识,有个非官方的 “顺时针/螺旋法则(Clockwise/Spiral Rule)” 可用来帮助辩识。 该法则的内容,简单来说,为了搞清楚一个未知标识符的含义,我们可以:
实地演练一个简单的示例先从一个简单的开始,判定如下语句中 +-------+
| +-+ |
| ^ | |
char *str[10];
^ ^ | |
| +---+ |
+-----------+ 根据螺旋法则,如上面线图标识所示,
进阶回到文章开头那个语句,来判定其中 +-----------------------------+
| +---+ |
| +---+ |+-+| |
| ^ | |^ || |
void (*signal(int, void (*fp)(int)))(int);
^ ^ | ^ ^ || |
| +------+ | +--+| |
| +--------+ |
+----------------------------------+ 由螺旋法则画出如上的线图,进而可分析:
最后捋一下 成员函数的判定螺旋施法没有给出在 考察如下语句: const int*const Method3(const int*const&) const; 当函数后面紧跟一个 下面对上面的语句进行分析:
相关资源 |
CC BY-NC-SA 署名-非商业性使用-相同方式共享