C++ 变量判定的螺旋法则
- 2019 年 10 月 3 日
- 筆記
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;
当函数后面紧跟一个 下面对上面的语句进行分析:
相关资源 |