Udostępnij za pośrednictwem


Pieczętowanie funkcji wirtualnej

Składnia funkcji wirtualnych plombowania zmienił się z rozszerzeń zarządzanych języka C++ do Visual C++.

__sealed Użyć słowa kluczowego w zarządzanych rozszerzeń do modyfikowania albo typ odwołania, brak zezwolenia kolejnych wyprowadzenie z niej (zobacz Deklaracja zarządzanego typu klasy), i do modyfikowania funkcji wirtualnych, brak zezwolenia kolejnych przesłanianie metody w klasie pochodnej.Na przykład:

__gc class base { public: virtual void f(); };
__gc class derived : public base {
public:
   __sealed void f();
};

W tym przykładzie derived::f() zastępuje base::f() wystąpienie oparte na dokładne dopasowanie prototypu funkcji.__sealed Słowa kluczowego wskazuje, że kolejne odziedziczonej z klasy pochodne klasy nie może dostarczyć nadpisanie derived::f().

W nowych składni sealed jest umieszczony po podpis, a nie jest dozwolone pojawiają się gdziekolwiek przed prototyp rzeczywista funkcja była poprzednio dozwolona.Ponadto, użycie sealed wymaga użycia jawnego virtual jak również słowa kluczowego.Oznacza to, że poprawne tłumaczenie derivedpowyżej, jest następująca:

ref class derived: public base {
public:
   virtual void f() override sealed;
};

Przy braku virtual słowa kluczowego w tym wystąpieniu powoduje wystąpienie błędu.W nowych składni kontekstowych słowa kluczowego abstract może być używany zamiast =0 do wskazania czystego funkcji wirtualnych.To nie jest obsługiwana w ramach rozszerzeń zarządzanych.Na przykład:

__gc class base { public: virtual void f()=0; };

można zapisać jako

ref class base { public: virtual void f() abstract; };

Zobacz też

Informacje

zapieczętowane

Koncepcje

Deklaracje członków w obrębie klasy lub interfejsu (C++/CLI)