Silly question
    janderson 
    askme at me.com
       
    Wed Apr 23 19:40:52 PDT 2008
    
    
  
Jarrett Billingsley wrote:
> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message 
> news:fuo7ac$17mn$1 at digitalmars.com...
>> Are private functions that aren't declared final in the vtable?  Instinct 
>> tells me they should not be, but maybe they are...
>>
>> -Steve
>>
> 
> They aren't, at least what a little experiment shows:
> 
> class A
> {
>     public void foo() {}
> }
> 
> class B
> {
>     private void bar() {}
> }
> 
> void main(char[][] args)
> {
>     Stdout.formatln("{}", Object.classinfo.vtbl.length);
>     Stdout.formatln("{}", A.classinfo.vtbl.length);
>     Stdout.formatln("{}", B.classinfo.vtbl.length);
> }
> 
> prints 5, 6, 5. 
> 
> 
They are however in my book this is plain wrong.  The whole purpose of 
being able to hide abstraction layers is broken.  I should be able to 
protect inherited functions from objects that work on that level.  Its a 
fundamental principle in C++.
-Joel
    
    
More information about the Digitalmars-d-learn
mailing list