Is there a way to call an object's base class method that's overriden? (C++)

后端 未结 3 1429
野性不改
野性不改 2021-01-22 04:27

I know some languages allow this. Is it possible in C++?

相关标签:
3条回答
  • 2021-01-22 04:49

    Yes:

    #include <iostream>
    
    class X
    {
        public:
            void T()
            {
                std::cout << "1\n";
            }
    };
    
    class Y: public X
    {
        public:
            void T()
            {
                std::cout << "2\n";
                X::T();             // Call base class.
            }
    };
    
    
    int main()
    {
        Y   y;
        y.T();
    }
    
    0 讨论(0)
  • 2021-01-22 05:00
    class A
    {
      virtual void foo() {}
    };
    
    class B : public A
    {
       virtual void foo()
       {
         A::foo();
       }
    };
    
    0 讨论(0)
  • 2021-01-22 05:06

    Yes, just specify the type of the base class.

    For example:

    #include <iostream>
    
    struct Base
    {
        void func() { std::cout << "Base::func\n"; }
    };
    
    struct Derived : public Base
    {
        void func() { std::cout << "Derived::func\n"; Base::func(); }
    };
    
    int main()
    {
        Derived d;
        d.func();
    }
    
    0 讨论(0)
提交回复
热议问题