《C++ Primer Plus》中的作用域的定义与《C++ Primer》中的有一些差别,这差别导致对其它概念的阐述不同,理解方式也将会不一样,有必要进行区分。
《C++ Primer Plus》是这样定义的:作用域描述了名称在文件(翻译单元)的多大范围可见。我一般记为,描述名称的可见范围(有效范围)。一开始觉得这样很好,挺好理解的。后面他将作用域分为了几类,例如局部(块)作用域:从声明位置到其所在的代码块结尾。
但在对单定义规则、局部屏蔽、链接性进行阐述时,它经常是认为包括声明语句上方区域在内的整个代码块或文件。因为当你使用嵌套作用域、扩展作用域时以“从声明位置到其所在的代码块结尾”的定义为基础就不是很好解释与说明。所以不能就记为我认为的“描述名称的可见范围(有效范围)”。但我认为本书的定义也比较容易出歧义或难以理解。
《C++ Primer》则对作用域的定义就抽象出来,即是程序的一部分,在其中名字有其特定的含义。既然之前对作用域的定义以字面意思出发,那为什么不把可见范围(有效范围)就用有效区域的概念呢。这样有效区域就被定义为:始于名字的声明语句,以声明语句所在的作用域末端为结束。我综合下,记为,从声明位置到其所在的作用域结尾。
这下任务就来了,如何以上述新的定义回顾之前以旧定义所阐述的其它相关概念。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)