Giriş
final bir anahtar kelime değil. Açıklaması şöyle.
Sınıf İçin
Şöyle yapılır.
Açıklaması şöyle. Bir virtual metodun artık override edilemeyeceğini belirtir. C#'taki sealed ile aynı mantıkta çalışır.
Şöyle yaparız.
Örnek
Şöyle yaparız.
final bir anahtar kelime değil. Açıklaması şöyle.
override and final are not keywords.Instead they are special identifiers.Final Specifier sınıf ve virtual metodlar ile kullanılır.
That means you can actually declare variables, functions or type-names (type-alias or classes) with those names.
Sınıf İçin
Şöyle yapılır.
class Foo
{
...
};
class Baz final : public Foo
{
...
};
Metod İçinAçıklaması şöyle. Bir virtual metodun artık override edilemeyeceğini belirtir. C#'taki sealed ile aynı mantıkta çalışır.
If you don't mark the function as virtual and final then the child-class can still implement the function and hide the base-class function.Kısaca şöyle tanımlanabilir.
By making the function virtual and final the child-class can not override or hide the function.
void foo() final;
Uzun hali ise şöyle yazılır.virtual void foo() final override;
C#'ta sealed başa yazılır, C++'ta ise sona yazılır.public sealed override string Method1(){.....}
ÖrnekŞöyle yaparız.
struct B {
virtual void f() const final; // do not override
virtual void g();
};
struct D : B {
void f() const; // error: D::f attempts to override final B::f
void g(); // OK
};
Destructor İçinÖrnek
Şöyle yaparız.
class Derived: public Base
{
...
virtual ~Derived() final;
}
Bu durumda Derivide sınıfından kalıtmak mümkün olmaz. Şu kod derlenmez.class FurtherDerived: public Derived {// not allowed
}