发表日期: 2022-09-12 11:24:41 浏览次数:7
上往建站专注于网站建设开发,高端网站设计,网站制作,已为上海,苏州,北京,南京,重庆,成都,深圳,广州,东莞,惠州,佛山各地企业做网站,网站建设,企业官网设计,品牌网站建设,外贸网站建设,营销型网站建设,微商城开发,手机网站制作,微信公众号开发,营销网站制作,全网营销网站,高端网站设计,模板网站建设,商城网站开发,外贸网站制作,响应式网站,手机网站建设,小程序开发,微信网站制作,APP制作开发,网站改版
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
甘肃省天水外贸网站建设-双语网站制作-企业中英文网站优化推广-多语言集团网站定制开发
一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。
例如小李和小韩都参与了一个文件管理系统的开发,它们都定义了一个全局变量 fp,用来指明当前打开的文件,将他们的代码整合在一起编译时,很明显编译器会提示 fp 重复定义(Redefinition)错误。
为了解决合作开发时的命名冲突问题,C++ 引入了命名空间(Namespace)的概念。请看下面的例子:
namespace Li{ //小李的变量定义FILE* fp = NULL;}namespace Han{ //小韩的变量定义FILE* fp = NULL;}
小李与小韩各自定义了以自己姓氏为名的命名空间,此时再将他们的 fp 变量放在一起编译就不会有任何问题。
命名空间有时也被称为名字空间、名称空间。
namespace 是C++中的关键字,用来定义一个命名空间,语法格式为:
namespace name{
//variables, functions, classes
}
name
是命名空间的名字,它里面可以包含变量、函数、类、typedef、#define 等,最后由{ }
包围。
使用变量、函数时要指明它们所在的命名空间。以上面的 fp 变量为例,可以这样来使用:
Li::fp = fopen("one.txt", "r"); //使用小李定义的变量 fpHan::fp = fopen("two.txt", "rb+"); //使用小韩定义的变量 fp
::
是一个新符号,称为域解析操作符,在C++中用来指明要使用的命名空间。
除了直接使用域解析操作符,还可以采用 using 关键字声明,例如:
using Li::fp;fp = fopen("one.txt", "r"); //使用小李定义的变量 fpHan :: fp = fopen("two.txt", "rb+"); //使用小韩定义的变量 fp
在代码的开头用using
声明了 Li::fp,它的意思是,using 声明以后的程序中如果出现了未指明命名空间的 fp,就使用 Li::fp;但是若要使用小韩定义的 fp,仍然需要 Han::fp。
using 声明不仅可以针对命名空间中的一个变量,也可以用于声明整个命名空间,例如:
using namespace Li;fp = fopen("one.txt", "r"); //使用小李定义的变量 fpHan::fp = fopen("two.txt", "rb+"); //使用小韩定义的变量 fp
如果命名空间 Li 中还定义了其他的变量,那么同样具有 fp 变量的效果。在 using 声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用命名空间 Li 中的变量。
命名空间内部不仅可以声明或定义变量,对于其它能在命名空间以外声明或定义的名称,同样也都能在命名空间内部进行声明或定义,例如类、函数、typedef、#define 等都可以出现在命名空间中。
站在编译和链接的角度,代码中出现的变量名、函数名、类名等都是一种符号(Symbol)。有的符号可以指代一个内存位置,例如变量名、函数名;有的符号仅仅是一个新的名称,例如 typedef 定义的类型别名。
下面来看一个命名空间完整示例代码:
#include <stdio.h>//将类定义在命名空间中namespace Diy{class Student{public:char *name;int age;float score;public:void say(){printf("%s的年龄是 %d,成绩是 %f ", name, age, score);}};}int main(){Diy::Student stu1;stu1.name = "小明";stu1.age = 15;stu1.score = 92.5f;stu1.say();return 0;}
运行结果:
小明的年龄是 15,成绩是 92.500000
C++ 命名空间的语法比较复杂,本节所讲到的只是冰山一角,主要是为下节《C++头文件和std命名空间》的讲解打基础。关于命名空间的更多内容我们将在后续章节中一一讲解。
甘肃省天水外贸网站建设-双语网站制作-企业中英文网站优化推广-多语言集团网站定制开发
杭州网站建设案例、杭州网站设计案例、杭州网站制作案例,杭州网站案例,杭州网站建设,杭州营销型网站建设,杭州微商城开发,杭州手机网站制作,杭州微信公众号开发,杭州高端网站建设公司,优秀的网站搭建与策划制作团队,深厚的网站推广运营经验
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
备案号: 苏ICP备20012587号-5
CopyRight © 2021 常州通陆信息科技有限公司 All Right Reserved 未经许可不得复制转载
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.ltd 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
全国服务热线:400-111-6878