网站空间付款方式,中英文网站设计,网站运营的发展方向,企业展厅建筑外观域
在学习命名空间之前#xff0c;我们首先要了解几种常见的域
一、域的种类
1、类作用域
类作用域是指定义在类内部的成员#xff08;包括数据成员和成员函数#xff09;的可见性和访问权限的范围
代码示例#xff1a;
#define _CRT_SECURE_NO_WARNINGS 1#include 我们首先要了解几种常见的域
一、域的种类
1、类作用域
类作用域是指定义在类内部的成员包括数据成员和成员函数的可见性和访问权限的范围
代码示例
#define _CRT_SECURE_NO_WARNINGS 1#include iostream// 定义一个名为MyClass的类
class MyClass
{
public:// 类内的成员变量int memberVar;// 类内的成员函数void memberFunction(){// 在成员函数内部可以直接访问类的成员变量memberVar 10;std::cout 在成员函数中成员变量的值为 memberVar std::endl;}
};int main()
{// 创建MyClass类的对象MyClass obj;// 通过对象访问类的成员变量obj.memberVar 5;std::cout 在main函数中通过对象设置成员变量的值为 obj.memberVar std::endl;// 通过对象调用类的成员函数obj.memberFunction();return 0;
}
2、命名空间域
命名作用域是一个区域在这个区域内一个特定的名字比如变量名、函数名、类名等是有意义的并且可以被正确地引用。简单来说它定义了一个范围在这个范围里名字具有明确的、独一无二的身份。
代码示例
#include iostream
using namespace std;namespace myspace
{int a 10;int Add(int x, int y){return x y;}
}int main()
{cout myspace::a endl;cout hello world! endl;return 0;
}
3、局部域
局部变量的作用域通常被限定在定义它们的函数或代码块内局部变量的生命周期通常与函数的执行周期相对应。 当函数被调用时局部变量被创建当函数执行完毕时局部变量被销毁。
代码示例
#include stdio.hint a 10;int main()
{{int b 0;printf(b的值为%d\n, b);}//b是局部变量作用域为所在的局部区域//printf(%d, b);//a为全局变量作用域是全局的可以在程序中的任意地方使用printf(a的值为%d\n, a);
}
4、全局域
全局变量存放在静态存储区中。 因此他们的生存周期是固定的存在于程序的整个运行过程中。
代码示例
#include stdio.hint a 10;int main()
{{int b 0;printf(b的值为%d\n, b);}//b是局部变量作用域为所在的局部区域//printf(%d, b);//a为全局变量作用域是全局的可以在程序中的任意地方使用printf(a的值为%d\n, a);
}
二、访问顺序
在代码中访问顺序为 优先局部域 其次访问全局域 访问展开命名作用域或指定访问命名空间域 1、访问局部域
#include stdio.h
#include stdlib.hint a 10;int main()
{int a 0;printf(%d\n, a);
} 运行这段代码发现只会打印局部变量a的值
2、访问全局域
那么如何才能访问全局变量的值呢在C中有以下办法
#include stdio.h
#include stdlib.hint a 10;int main()
{int a 0;printf(全局变量a的值为:%d\n, a);printf(全局变量a的值为:%d\n, ::a);
} 在这段代码中我们运用了符号 : : (域作用限定符) 空格 : : 就可以顺利访问全局变量a的值
3、访问命名空间域
接下来再看一段代码
#include stdio.h
#include stdlib.hint atof 1;int main()
{printf(%d\n, atof);
}
在这段代码中假设在不知情的情况下定义了一个名为atof的变量在main函数中打印这个变量的值但是我们会发现代码会报错 经查可知头文件stdlib.h中包含了名为atof的函数此时我们再定义atof的变量就会报错那么如何解决这个问题呢就有了命名空间的用法
#include stdio.h
#include stdlib.hnamespace myspace
{int atof 1;
}int main()
{printf(atof的值为%d\n, myspace::atof);
}
此时我们创建了一个名为myspace的命名空间通过访问myspace就可以成功获得atof的值 访问命名空间的方法 展开命名空间域
假设需要访问std (标准库)
using namespace std
注意展开相当于把命名空间的内容暴露在全局中有风险不建议使用 指定访问命名空间
假设访问命名空间myspace中的变量a
printf(a的值为:%d\n,myspace::a);