命名空间,作用域与可见性和对象的生存周期

代码-A

#include<iostream>
using namespace std;
int a;//全局变量a,具有命名空间作用域
int q = 1;//q是全局变量,具有静态生存期
void print()
{
	cout << "调用函数定义a的值为:" << a << endl;
	if (a == 999)
		cout << "看来局部变量a只有在下面定义的for内有效!" << endl;
	else
		cout << "作用域概念出错!" << endl;
}
namespace zhu
{
	float a;
	float b;
	void area(float a, float b)
	{
		cout << a * b << endl;
	}
}
namespace jia
{
	float a = 6.5;
	float b = 5.2;
	float y = 6.5;
	float u = 5.2;
	float area()
	{
		return y * u;
	}
	float area1()
	{
		return a * b;
	}
}
/*namespace shen  //此命名空间无任何定义
{

}*/
namespace keng {

	float a = 1;
	float area(float a, float b)
	{
		return a * b;
	}
}
void bian()
{
	static int j = 8;//j是静态局部变量,具有全局寿命,局部可见,只有第一次进入函数才被初始化
	q++;
	int w = 10;//w是动态局部变量,具有动态生存期,每次进入函数都会初始化
	w += 10;
	cout << "--BIAN--\n" << "j是:" << j << "\t全局变量q是:" << q << "\tbian函数内局部变量w是:" << w << endl;
	j += 8;
}
int main()
{
	a = 999;
	int b = 6;//局部变量b
	for (int a = 0; a < 2; a++)//for是定义的局部变量a作用域
	{
		cout << "局部变量a的值是:" << a << endl;
		cout << "局部变量b的值是:" << b << endl;
	}
	cout << "全局变量a的值是:" << a << endl;
	print();
	//简化引用
	{using namespace zhu;
	float a = 6.5;
	float b = 5.2;
	float c = 6.6;
	area(a, b);
	area(b, c); }
	//直接引用
	cout << "矩形长是:" << jia::y << endl;
	cout << "矩形宽是:" << jia::u << endl;
	cout << "矩形面积是:" << jia::area() << endl;
	cout << "矩形面积是:" << jia::area1() << endl;
	jia::y = 3;//给jia命名域里y赋值
	jia::u = 2;//同上
	cout << jia::area() << endl;
	/*{	using namespace shen;
		float = a;      //命名空间无任何定义必报错
		cout << a << endl;
	}*/
	{ using namespace keng;
	float a = 2.5;
	float b = 4;
	cout << "面积是:" << area(a, b) << endl;
	}
	static int j;
	int w = 6;
	cout << "--MAIN--\n" << "j是:" << j << "\t全局变量q是:" << q << "\tmain函数内局部变量w是:" << w << endl;
	bian();
	w += 6;
	cout << "--MAIN--\n" << "j是:" << j << "\t全局变量q是:" << q << "\tmain函数内局部变量w是:" << w << endl;
	bian();
	cin.get();
	return 0;
}

End

~
记录留存


发布了34 篇原创文章 · 获赞 0 · 访问量 515

猜你喜欢

转载自blog.csdn.net/weixin_44228006/article/details/104095183