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 连接配
- 下一篇: Invalid VCS root map