从派生类对象访问具有相同签名的基类fn

时间:2009-08-19 09:27:20

标签: c++ derived-class base-class

是否可以使用派生类对象访问与派生类函数具有相同签名的基类函数?这是我在下面陈述的样本..

class base1 {
public:
    void test()
    {cout<<"base1"<<endl;};
};

class der1 : public base1 {
public:
    void test()
    {cout<<"der1"<<endl;};
};

int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}

3 个答案:

答案 0 :(得分:6)

您需要完全限定方法名称,因为它与继承的名称冲突。

使用obj.base1 :: test()

答案 1 :(得分:1)

如果未提供虚拟关键字,则无法覆盖派生类中的方法。

class base1
{
    public:
        void test()
        {
            cout << "base1" << endl;
        };
};

class der1 : public base1
{
    public:
        void test()
        {
            cout << "der1" << endl;
        };
};

int main()
{
    der1 obj;
    obj.test(); // How can I access the base class 'test()' here??
    return 0;
}

所以上面的代码是错误的。你必须给:

virtual void test();

在您的基类

答案 2 :(得分:0)

您可以使用:

((base)obj).test();