用C++实现命名空间的讲解,面向对象编程由此开始(二)

今天在看TensorRT相关部分的代码,当然主要是C++部分的,因为TensorRT对于模型部署来说非常重要,所以我必须得读懂C++代码,虽然没怎么接触过,但也要竭尽全力去努力。说来惭愧,在代码的最开头,我就没看懂。

今天在看TensorRT相关部分的代码,当然主要是C++部分的,因为TensorRT对于模型部署来说非常重要,所以我必须得读懂C++代码,虽然没怎么接触过,但也要竭尽全力去努力。

说来惭愧,在代码的最开头,我就没看懂。

namespace,对我来说实在是一个比较陌生的东西,知道它叫命名空间,却不知道它的具体作用和用法,所以,写下这篇文章来记录一下,为以后也好做好准备。

命名空间,顾名思义,就是与命名有关系,我们先来看一下平时在操作系统中,我们是如何来命名的。

用C++实现命名空间的讲解,面向对象编程由此开始(二)

如上图所示,这是一个文件夹一种包含了两个文件夹,分别是文件夹二和文件夹三,文件夹二中又有三个文件,分别是Test.txt、Test1.txt和Test2.txt,再来观察文件夹三,也包含Test.txt、Test1.txt和Test2.txt这三个文件,可以发现,虽然有重名却不会有影响。

那么可以说这是属于操作系统的文件命名方式,对于C++来说,如果要让相同文件名能够存在,就要引入一个命名空间的概念了。

namespace的定义

我们都知道,C++是一种面向对象的程序设计语言,涉及到类等概念,那么命名空间对其来说,最主要的作用就是区分相同名称的函数、类、变量等。

与在操作系统中对文件命名类似,一个命名空间就相当于一个文件夹,那么命名空间应该是不相同的,而命名空间所包含的内容可以相同的,比方说在命名空间内的函数名、类名或者变量名可以相同。

用C++实现命名空间的讲解,面向对象编程由此开始(二)

如上图所示,与操作系统中对文件命名类似,我们只需要把文件夹的命名给修改掉,以及把类名、变量名和函数名改成相同的即可。

代码实现

//C++命名空间
#include <iostream>
using namespace std;//使用std命名空间
//第一个命名空间
namespace first {
    class test {
    public:
        int number = 2;
        void run() {
            cout << " the number of first namespace is " << number << endl;
        }
    };
}
//第二个命名空间
namespace second {
    class test {
    public:
        int number = 3;
        void run() {
            cout << " the number of second namespace is " << number << endl;
        }
    };
}
int main()
{
    first::test test1;
    second::test test2;
    test1.run();
    test2.run();
}

可以发现,调用不同命名空间内的函数还是比较简单的,就是用命名空间的名称来进行调用,而且不同命名空间内的类名、函数名和变量名是可以相等的。

结果测试

用C++实现命名空间的讲解,面向对象编程由此开始(二)

总结

总的来说,命名空间还是比较好用的,有命名空间的存在,就可以使用相同名称来定义类名、变量名和函数名,方便理解,当然,命名空间还存在别的用法,这个我们之后会讲到。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/91848.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信