• Item 24. 成员函数的查找(Member Function Lookup )


    Item 24. Member Function Lookup

    当调用一个成员函数时,涉及到三个步骤:
    1)编译器寻找函数名
    2)从有效的候选函数中选出最匹配的
    3)核对选出的函数与要访问的函数

    从这个角度理解如下代码:
    class B {
      public:
        //...
        void f( double );
    };
    class D : public B {
        void f( int );
    };
    //...
    D d;
    d.f( 12.3 ); // confusing

    那终究调用的是 B::f( double ) 还是 D::f( int )呢?
    分析一下那三个步骤:
    1)寻找函数名。因为是调用D的对象,所以寻找的起始域是D,于是只找到D::f( int )
    ( 为什么找不到 B::f( double )呢?, 我也纳闷!)
    2)从有效的候选函数中选出最匹配的。只有D::f( int ),那就是它喽
    3)核对访问.因为D::f( int )是private,所以出错啦,

    果真如此吗?
    那就试一下就晓得了

  • 相关阅读:
    DBCP数据库连接池
    Java Ant build.xml详解
    AWK 用法
    java打jar包
    linux 下java jar包的方法
    linux下java命令行引用jar包
    java webservice
    设计模式的几大原则
    ContextLoaderListener
    WebApplicationContextUtils源码
  • 原文地址:https://www.cnblogs.com/aiwz/p/6333232.html
Copyright © 2020-2023  润新知