回 帖 发 新 帖 刷新版面

主题:向高手请教一个继承中没有见过的问题!

向高手请教一个继承中没有见过的问题!
有一个如下的程序:
#include<iostream.h>
class x
{
    int a;
public:
    x(){a = 3;}
    int geta()
    {
        cout << a << endl;
        return a;
    }
};
class y : x
{
    int b;
public:
    [color=FF0000]x::geta;   //请教这个地方是什么意思?[/color]
    void result()
    {
        b = geta() + 8;
        cout << b << endl;
    }
};
int main()
{
    y yy;
    yy.result();
    yy.geta();
    return 0;
}
 以上程序在VC++6.0下编译、运行都能通过。请教红色文字的地方:x::geta如果是声明父类中的geta()的话,为什么不用原型(void geta());如果是公共继承的话,是否只要使用函数名来说明子类拥有该函数(如果父类中有多个geta()函数,那子类在这种情况下怎么说明拥有父类的函数?)。我baidu和googleN次,网上好像没有类似的问题。实在无奈,烦请各们位高手指点一下,并请给出详细的讲解!谢谢!

回复列表 (共5个回复)

沙发

声明在本类中还要用到父类方法吧……

板凳

将基类的方法引入本类,过会儿写个代码给你你就明白了

3 楼


#include <iostream>
using namespace std;

struct foo1
{
    void bar( int )
    {
        cout << "int" << endl;
    }
};
struct foo2 : foo1
{
    using foo1::bar; // 去掉这一句,和保留这一句,看看结果有什么区别
    void bar( float )
    {
        cout << "float" << endl;
    }
};

int main()
{
    foo2 a;
    a.bar( 1 );

    return 0;
}

4 楼


谢谢bruceteen的解答!明白了!

5 楼


上面楼主说的对,加上 x::geta;是对基类的引用不加是对派生类的引用

我来回复

您尚未登录,请登录后再回复。点此登录或注册