C++作用域总结

更新时间:2023-05-05 09:56:19 阅读: 评论:0

C++作⽤域总结
在C++中,涉及到作⽤域的语法很多,经常混淆。所以对作⽤域与作⽤域作⼀个总结,注意这个总结还不完整,当遇到新的语法时再继续补充。
⼀、全局作⽤域(global scope)。
概念:定义在函数外部的名字具有全局作⽤域。具有全局作⽤域的名字可以在整个程序中访问,即使不同⽂件也可以访问。
⼆、如何访问全局作⽤域的变量?
1. 变量在本⽂件中定义。
直接访问。
⽐如:
// file_1.cpp
int counter;  // definition
// file_1.cpp
cout << counter++ << endl;
2. 变量在其它⽂件中定义。
在访问前先要声明,然后才可以使⽤。例如:
// file_1.cpp
int counter;  // definition
// file_2.cpp
extern int counter; // declaration
cout << couter++ << endl; // counter是在⽂件file_1.cpp中定义的全局变量
声明没有定义变量,只是告诉编译器在其它⽂件中有counter这个变量。所以在file_2.cpp中,counter是file_1.cpp定义的全局变量。
注意:我们要区分其它⽂件与Include。如果include了这个⽂件,就不再是其它⽂件了。⽐如下⾯的例⼦,这个时候counter对file_2.cpp 是可见了。因为file_2.cpp已经包含了⽂件file_1.cpp。
// file_2.cpp
#include file_1.cpp
三、const 对象默认为⽂件的局部变量
在全局作⽤域定义的const变量,只在该⽂件中是全局变量,在⽂件外部是不可见的。
// file_1.cpp
const int counter = 10;  // definition
// file_2.cpp
cout << counter++ << endl;  // error, ⽂件file_1中的counter在file_2中不可见
有⼀种办法可以把const变量变为全局变量,其它⽂件也可以访问。⽅法是在定义时加上extern修饰符,这样在整个程序中都可以访问该const对象了。
// file_1.cpp
extern const int counter = 10;  // definition
// file_2.cpp
cout << counter++ << endl;  // OK
当然,file_1.cpp定义的counter必须是在全局作⽤域定义的。
注意:这⾥的extern修饰符与普通的extern修饰符作⽤不同。这⾥是将const变为整个程序的全局变量,⽽普通的extern修饰符是声明⼀个变量。同⼀个符号在不同的上下⽂中意思不同甚⾄完全不同,这就是C++难以掌握的原因之⼀,所以总结就变得更加重要了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总结的不完整,以后见到涉及作⽤域的知识点再继续补充。

本文发布于:2023-05-05 09:56:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/96538.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:定义   变量   语法   总结   补充
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图