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

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

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

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

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

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

namespace的定义

我们都知道,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; (); (); }

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

结果测试

总结

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

1.《如何在命名空间中启动节点》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《如何在命名空间中启动节点》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3367810.html