美文网首页Exceptional C++
【Exceptional C++(17)】名称搜索

【Exceptional C++(17)】名称搜索

作者: downdemo | 来源:发表于2018-01-30 10:02 被阅读2次

问题

  • 下面代码调用的是哪个函数
namespace A {
    struct X;
    struct Y;
    void f(int);
    void g(X);
}
namespace B {
    void f(int i) { 
        f(i); // 1
    }
    void g(A::X x) {
        g(x); // 2
    }
    void h(A::Y y) {
        h(y); // 3
    }
}

解答

  • 1调用的是它自己,并且是无穷递归,因为B没有using namespace A或using A::f,如果写了,将在A::f(int)和B::f(int)间造成二义性
  • 2调用则会造成二义性,Koenig Lookup(简化版)规定如果给函数提供一个class类型实参,在名称搜索时编译器将认为包含实参类型的命名空间中的同名函数为可选函数
  • 3调用的是它自己,也是无穷递归,因为没有其他的h(A::Y)函数

相关文章

  • 【Exceptional C++(17)】名称搜索

    问题 下面代码调用的是哪个函数 解答 1调用的是它自己,并且是无穷递归,因为B没有using namespace ...

  • 2020-03-11 c++ book

    exceptional c++ style 中文版more exceptional c++ 中文版exceptio...

  • 书签

    笔记 C++ PrimerEffective C++Exceptional C++Effective STLC++...

  • 书签

    笔记 C++ PrimerEffective C++Exceptional C++Effective STLC++...

  • 【Exceptional C++】索引

    本书内容取自作者博客的gotw栏目,即Guru of the Week,通过问答方式更深入地挖掘C++语言特性适用...

  • 当下编程之道:C++屹立不倒

    正好我一个月前看到一个视频,这个演讲视频还比较著名,这个演讲者是Exceptional C++和C++ Codin...

  • 【Exceptional C++(27)】Bool

    问题 如果没有bool类型,能用已有的数据类型达到相同效果吗? 解答 不能,bool型和true,false无法通...

  • 【Exceptional C++(1)】Iterators

    问题 下面代码中有至少四个与iterator相关的问题,找出来 说明 std::copy拷贝[first,last...

  • 王者编程: Why C++?

    序言 前几个月前看到一个视频,这个演讲视频还比较著名,这个演讲者是 *Exceptional C++ * 和 C+...

  • 王者编程: Why C++?

    序言 一个月前看到一个视频,这个演讲视频还比较著名,这个演讲者是 *Exceptional C++ * 和 C++...

网友评论

    本文标题:【Exceptional C++(17)】名称搜索

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