首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

派生类调用有关问题

2012-02-19 
派生类调用问题classBase{public:foo(int)protected:int_bardouble_foo_bar}classDerived:publicBase{

派生类调用问题
class   Base{
            public:
                          foo(int);
            protected:
                          int   _bar;
                          double   _foo_bar;
};
class   Derived   :   public   Base{
            public:
                          foo(string);
                          bool   bar(Base   *pb);
                          void   foobar();
                          //...
            protected:
                          string   _bar;
};

-------------------------
上面是派生类定义,如果要调用
      Derived   d;
      d.foo(1024);
这显然是错的,需要在前面加上using   Base::foo;
问题是:using   Base::foo;这个句子是什么意思,有什么作用呢   ?

[解决办法]
using std::cin;的作用知道吗?
和此类似。具体看C++ Primer,关于重载解析的章节。
[解决办法]
因为在Derived类中的foo函数覆盖了基类的foo函数,使它在Derived类中的foo函数的作用域
不可见(即被隐藏),using Base::foo,可以使得基类的foo函数重新可见,即在编译器进行函数名字解析的时候会把这两个同名又同时可见的函数都作为候选函数对待,再根据函数参数进行解析,相当于函数重载。

热点排行