Sanal Kalıtım Nedir?

Sanal kalıtım, bir üst sınıfın uygulanmasının eksik olduğu ve bir nesnenin tam tanımlanması için bir alt sınıfın gerekli olduğu bir tür kalıtımdır. Bu tür kalıtım, hem tek hem de çoklu kalıtımla bağlantılı olarak kullanılabilir, fakat en yaygın olarak çoklu kalıtımda kullanılır. Sanal bir temel sınıftan miras alan herhangi bir sınıf, o temel sınıfın doğrudan bir alt sınıfı olur. Sanal bir temel sınıf, tüm yöntemlerini uygulamak için bir alt sınıfa güvenebilir, ancak bu bir gereklilik değildir.

C ++, sanal miras kullanan en yaygın bilgisayar dilidir. C ++ 'da sanal devralmayı bildirmek için "sanal" anahtar sözcüğü kullanılır. Hem üst sınıf hem de alt sınıf, "sanal" anahtar kelimeyle sanal yöntemler tanımlamalıdır. Bu, C ++ derleyicisine süper sınıfın eksik olduğunu ve onu tamamlamak için alt sınıftan bilgi alması gerektiğini söyler. Üst sınıfı tamamlamak için alt sınıfı kullanmak, aynı temel sınıfa sahiplerse, alt sınıfların birbirinin üzerine yazdığı anlamına gelmez ve bunun yerine C ++ derleyicisi, her bir nesnede hangi parçaların gideceğini belirlemeye özen gösterir.

Sanal kalıtım için sanal bir temel sınıf gerektiğinden, C ++ 'daki genel işlevler sanal olarak bildirilemez. Bu kalıtım tipi yalnızca nesne yönelimli programlama (OOP) ilkelerine bağlı kalırken kullanılabilir. Bunun nedeni, küresel işlevlerin belirli bir sınıfla ilişkilendirilmemesi ve genellikle kendi başlarına kendi kendine yetmeleridir. Bir üst sınıf ve alt sınıf mirası olmadan, genel fonksiyonlar ve sanal miras karşılıklı olarak birbirinden ayrılmaz. Global fonksiyonlar teoride sanal fonksiyonların içinde kullanılabilir, ancak bunun tersi her zaman işe yaramayabilir.

Sanal kalıtım birçok programlama problemini çözmek için kullanılır ve en faydalı olanlarından biri belirsizliğin çözülmesidir. Çoklu kalıtımda, biri B ve C olmak üzere iki alt sınıfa sahip bir A sınıfı ve sonra B ve C sınıflarından her ikisini de devralan bir D sınıfı olabilir. Çünkü bu örüntüye genellikle "ölüm elması" denir. B ve C'nin hepsinde aynı yöntemin uygulamaları vardır, D sınıfının hangi uygulamayı kullanması gerektiğini belirlemesi mümkün değildir. Sanal kalıtım bu sorunu çözer çünkü her bir sınıfın uygulaması farklı ve dolayısıyla belirsizdir. Bu ayrım, her nesne tipini takip eden sanal tablolar (vtables) adı verilen özel dahili nesneler tarafından ele alınmaktadır, ancak bu tabloların, bir dil programcı tarafından açıkça manipüle edilmelerine gerek yoktur;