【问题标题】:What is namespace used for, in C++?在 C++ 中,命名空间用于什么?
【发布时间】:2020-01-10 02:43:59
【问题描述】:

命名空间在 C++ 中的用途是什么?

using namespace std;

【问题讨论】:

标签: c++


【解决方案1】:

命名空间用于防止名称冲突。

例如:

namespace foo {
    class bar {
        //define it
    };
}

namespace baz {
    class bar {
        // define it
    };
}

您现在有两个类名称栏,由于命名空间,它们完全不同且分开。

您展示的“使用命名空间”是为了让您不必指定命名空间即可使用该命名空间中的类。即 std::string 变为字符串。

【讨论】:

    【解决方案2】:

    它用于防止名称冲突,因此您可能在不同的命名空间中有两个同名的类。

    它还用于对类进行分类,如果您看过 .net 框架,您会看到命名空间用于对类进行分类。例如,您可以为员工类定义一个命名空间,为任务类定义一个命名空间,并且这两个命名空间都在公司类的命名空间内,因为命名空间可能包含子命名空间。

    相同的命名空间可能存在于不同的文件中,因此using 它可能很有用,因为它可以让您直接使用每个#included 文件中命名空间中的所有类。

    这就是我现在记得的。

    【讨论】:

      【解决方案3】:

      有人可能会问,简单的一对花括号{} 足以解决名称冲突。仍然为什么有一个命名空间。上面提到的 Tamer 的一个快速回答是,使用 NameSpace 我们可以在另一个文件中打开相同的范围。

      【讨论】:

        【解决方案4】:

        命名空间通常用于防止命名冲突。 所以,命名空间出现的一个地方是

        class ABC{
        //  Does something for me.
        };
        
        class ABC{
        // Does something for you..
        };
        
        int main() {
            ABC myABC;
            return 0;
        }
        

        这将导致编译错误,因为系统将不知道要考虑哪个类。这里出现了命名空间的概念。

        namespace My{
            class ABC{
            //  Does something for me.
            };
        }
        namespace Your{   
            class ABC{
            // Does something for you..
            };
        }
        using My::ABC
        // We explicitly mention that My ABC is to be used. 
        int main() {
            ABC myABC;
            return 0;
        }
        

        代码将通过命名空间的使用而组织起来。

        【讨论】:

          猜你喜欢
          • 2010-11-15
          • 1970-01-01
          • 2020-10-28
          • 1970-01-01
          • 2022-01-19
          • 2015-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多