各位大佬好:
近期在学习《C++Primer》一书,在变量的作用域(2.2.4)章节有个疑惑:
#include <iostream>
int i = 100;
int
main() { // 作用域1
int i = 10;
std::cout << i << std::endl;
std::cout << ::i << std::endl;
{ // 作用域2
int i = 1;
std::cout << i << std::endl; // 作用域2的值,i=1
std::cout << ::i << std::endl;//全局作用域的值,i=100
// std::cout << ::i << std::endl; // 有办法打印i=10?
}
return 0;
}
请问c++有办法在作用域2内获取上一级作用域的i变量么?
:: 取的是最全局的作用域,默认取的是当前作用域,你说的上一级作用域只有编译器才知道,c++ 里面并没有语句来获得上一层作用域的概念。如果你实在需要类似的用法,只能通过 namespace 来实现。
注意,namespace 只能在全局空间内定义。