欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++基础篇(三)--命名空间

程序员文章站 2022-03-11 16:37:07
什么是命名空间在刚开始学C++时,对命名空间甚是迷惑,但写得久了后就当成习惯了,并未探究其本质。命名空间的定义:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。为何需要命名空间?一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。所以需要使用命名空间将变量进行分离,从...

什么是命名空间

在刚开始学C++时,对命名空间甚是迷惑,但写得久了后就当成习惯了,并未探究其本质。

在C语言中并未引入using namespace的概念,C语言中所有的全局标识符共享一个作用域,不同文件可通过extern关键字进行关联。

而在C++中当使用iostream时,由于该头文件没有定义全局命名空间,所以必须使用namespace std,这样才能正确的使用一些变量,例如cout,如果不引入,则需要std::cout。

命名空间的定义:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。

为何需要命名空间?

一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。
所以需要使用命名空间将变量进行分离,从而避免冲突的发生。
例如:

hao::qinger = 1;
jing:yi = 1;

则这两个变量分别来自于hao和jing这两个命名空间当中。
如果觉得这个例子不够直观,那么可以看下面这个例子:

SDAU::qinger = 1;
EDU::qinger = 1;

这两个qinger看似相同,但却来自于不同的命名空间,故其所指向的内存空间是不同的。

如何定义命名空间

命名空间的定义如下所示:

namespace name{
    //variables, functions, classes
}

在命名空间中可以包含变量、函数、类、typedef、#define 等。

如一个具体的例子:

namespace jing{
	string person = "qinger";
}

我们也可以在namespace中定义class:

namespace jing{
    class Person{
    public:
        char *name;
        float score;
  
    public:
        void say(){
           cout<<name<<的成绩是<<score<<endl;
        }
    };
}

在调用时只需:

int main(){
    jing::Person qinger;
    qinger.name = "卿儿";
    qinger.score = 100.0f;
    qinger.say();
    return 0;
}

本文地址:https://blog.csdn.net/bigMonkey521/article/details/107365979

相关标签: c++基础