C++, vtable kullanmayan bir arabirimin düzgün bir şekilde uygulanmasını sağlıyor mu? örneğinC++, vtable kullanmayan bir arayüzün statik bir polimorfizm uygulamasına sahip midir?
class BaseInterface{
public:
virtual void func() const = 0;
}
class BaseInterfaceImpl:public BaseInterface{
public:
void func(){ std::cout<<"called."<<endl; }
}
BaseInterface* obj = new BaseInterfaceImpl();
obj->func();
son satırında fonksiyon çağrısı BaseInterfaceImpl :: değer işlev fonk ptr bulmak için VTABLE gider, fakat BaseInterfaceImpl değil doğrudan bunun için herhangi bir C++ yolu yoktur Saf arabirim sınıfı BaseInterface dışında herhangi bir sınıftan alt sınıf mı?
Teşekkürler. Gil.
Bu vtable içinden geçtiği için neden umurunda olursunuz? – Thomas
coz Hızın önemli olduğu bir proje üzerinde çalışıyorum. Ayrıca, vtable tam oo polimorfizmi için büyük bir çözüm olduğunu ama 'arayüz' uygulamak için bir overkill olduğunu düşünüyorum ve umarım daha hafif bir çözüm var olur umarım .. – gilbertc
@gilbertc: Burada bir yanlış anlama olduğunu düşünüyorum. * Arayüz kavramının herhangi bir "uygun" uygulaması vtable gibi bir şeyden geçecektir. Aksi halde, dinamik polimorfizm imkansız olurdu. – Thomas