0

是否可以使用派生类对象访问与派生类函数具有相同签名的基类函数?这是我在下面所说的示例..

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;
}
4

3 回答 3

6

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

使用 obj.base1::test()

于 2009-08-19T09:28:40.263 回答
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();

在你的基类中

于 2009-11-04T08:23:48.657 回答
0

你可以使用这个:

((base)obj).test();
于 2010-11-08T13:26:16.200 回答