注册 登录
编程论坛 C++教室

向高手请教一个继承问题!

circlesky 发布于 2010-05-18 22:41, 427 次点击
有一个如下的程序:
#include<iostream.h>
class x
{
    int a;
public:
    x(){a = 3;}
    int geta()
    {
        cout << a << endl;
        return a;
    }
};
class y : x
{
    int b;
public:
    x::geta;   //请教这个地方是什么意思?
    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次,网上好像没有类似的问题。实在无奈,烦请各们位高手指点一下,并请给出详细的讲解!谢谢!

[ 本帖最后由 circlesky 于 2010-5-19 09:02 编辑 ]
2 回复
#2
2010-05-19 07:47
省略继承方式  默认为private 所以geta函数在y类为私有函数,主函数中对象不能调用,x::geta;写在派生类y的public:中,确保主函数能通过派生类调用基类geta函数!(我是这么理解的,才疏学浅,如果答错了 望见谅...)
#3
kingsroot2010-05-22 22:55
如果是公用继承的话 应该不用你在继承类中声明父类的函数了吧
如果父类中定义重载了函数名,方法也是一样的x::geta,当你调用的时候,编译器会自动绑定的
x::geta这样写,意思是使用父类的x类geta函数,写在public中,表示是可以被外部调用(前提是父类中geta是public的)
1