Vtable for virtual functions in D

sarn sarn at theartofmachinery.com
Wed Mar 7 00:52:15 UTC 2018


On Tuesday, 6 March 2018 at 21:20:22 UTC, Henrik wrote:
> Does anyone know if D is using the vtable implementation for 
> virtual functions just like most C++ compilers? If yes, can 
> someone explain the advantages of this strategy? A function 
> pointer in C is regarded as expensive because of missing 
> inlining, but a double indirection through a vtable just looks 
> insane - if there aren't really good reasons for such an 
> implementation. Does it make class inheritance or class 
> polymorphism much simpler to implement or what is the reason?
>
> I have worked with C in embedded systems for many years now, 
> and for our modern Linux systems we are using a combination of 
> C and Java today. Java for parts where memory safety is more 
> important than speed/determinism, and C for the critical real 
> time parts. There should exist a language between these worlds, 
> where we can achieve memory safety at relatively small costs. 
> C++ is not really an alternative, and D looks much more 
> pleasant for us C programmers than for example Rust.

D uses vtables.

It's a tradeoff between having double indirection and bloating 
each instance with the function pointers.  In cases where 
bloating isn't a problem, I just explicitly add normal function 
pointer members.


More information about the Digitalmars-d mailing list