innholdsfortegnelseFAQ for [no.it.programmering.c++]

4.3.2 Hva er det som tilsvarer Java super (C# base) i C++?

C++ anno 2003 har ikke noe tilsvarende nøkkelord.

For bruk av super/base til å anrope en basisklasse konstruktør, bruk en C++ konstruktør initialiseringsliste:


    struct A
    {
        int myX;
        A( int x ): myX( x )
        {}
    };

    struct B: A
    {
        int  myY;
        B( int x, int y ): A( x ), myY( y )    // Calls A constructor.
        {}
    };

For annen bruk av super/base til å anrope en basisklasse funksjon, bruk kvalifisering med basisklassenavnet. En typedef kan være greit for lange template-baserte navn. For eksempel:


    struct A
    {
        virtual void f()
        {
            // Something.
        }
    };

    struct B: A
    {
        typedef A Base;

        virtual void f()
        {
            A::f();          // Calls the f definition in A.
            Base::f();       // Calls the f definition in A.
        }
    };