美文网首页程序员
C++命名空间的查找顺序

C++命名空间的查找顺序

作者: 妖精不语 | 来源:发表于2019-08-16 18:03 被阅读0次
namespace test
{
    class atest{
        
    };
    
    void  func( atest& a , test::atest&  testa );
}

在这一段代码里,func的参数 atest 和 test::atest有什么区别呢?

  • 对于atest, 会先在namespace test里找是否有 atest类,如果没有,会在namespace test之外找atest。
  • 对于test::atest, 会现在namespace test里找是否有test的命名空间,如果有,则在test::test的命名空间下找是否存在atest,如果test::test存在,但test::test::atest不存在,则会报错。如果test::test不存在,则会在外层找test命名空间(这里必然有),然后再在test命名空间下找atest。
  • 一般情况下,不会有嵌套的同名命名空间,如test::test。但如果在命名空间中,误包含了其他定义了同名命名空间的头文件,就有可能出现,从而引起test::test::atest不存在的错误。当出现这种错误时,跟头文件的包含顺序有关,确定命名空间似乎是在展开头文件的同时进行的。当然,根本的解决方案还是把头文件包含移到命名空间外部去。

相关文章

  • C++命名空间的查找顺序

    在这一段代码里,func的参数 atest 和 test::atest有什么区别呢? 对于atest, 会先在n...

  • C++ 基础知识点大纲

    C++ C++对C的加强 namespace命名空间 C++命名空间基本概念 C++命名空间定义,使用语法,意义 ...

  • C++命名空间

    C++ 命名空间 C++为了区分多个xyz的函数的时候,需要使用命名空间进行区分。 定义命名空间 using 使用...

  • 05 NDK-C++基础(一)

    1 C++对C的加强 1.1 namespace命名空间 1.1.1 C++命名空间基本概念 在C/C++中,变量...

  • C++基本语法

    命名空间认识一下C++ 《命名空间》 cout = console output 控制台输出 参考资料C++ 基本语法

  • 1.C++基础

    C++头文件 传统C头文件C++头文件hpp文件 命名空间 C++ 引入了新的概念,命名空间可以有效避免大型项目的...

  • C++命名空间和作用域限定符, since 2020-11-15

    (2020.11.15 Sun) C++命名空间namespace(ns) 命名空间的引入是为了避免变量或函数重名...

  • C++ 高级特性

    C++ 命名空间 定义命名空间 您可以使用 using namespace 指令,这样在使用命名空间时就可以不用在...

  • C++ 中命名空间的 5 个常见用法,你知道几个呢?

    c++ 中的命名空间通常用于避免命名冲突。尽管命名空间在最近的 c++ 代码中广泛使用,但大多数较旧代码都不使用此...

  • NDK开发之C++语言学习第三节课内容回顾笔记

    一、介绍了C++的命名空间概率.C++可以用namespace关键字自定义命名空间 然后可以通过using nam...

网友评论

    本文标题:C++命名空间的查找顺序

    本文链接:https://www.haomeiwen.com/subject/kjwqsctx.html