Implementation hiding

Ary Manzana ary at esperanto.org.ar
Wed Jun 29 20:31:58 PDT 2011


On 6/30/11 10:30 AM, Ary Manzana wrote:
> On 6/30/11 4:29 AM, so wrote:
>>> Caveats:The class Foo cannot have any data members, even hidden ones
>>> like a vptr. Therefore, it cannot have any virtual functions.Foo
>>> cannot have any constructors, because we aren't constructing a real
>>> Foo, only a counterfeit one.
>>
>> Funny, these two requirements are in fact the starting points for my
>> search. I asked many times:
>>
>> * I don't need any virtual method.
>> * I don't need a constructor and construction is problematic for this
>> kind of work, mass allocation, io and such...
>>
>> Then why do i have to pay for a vtable or another layer of indirection
>> and on top of it an ugly design? There has to be a solution to this! But
>> there was none.
>
> The solution is to be able to override new. In Ruby you can do this:
>
> ---
> class Foo
> end
>
> class Bar
> def self.new
> Foo.new
> end
> end
> ---
>
> Now you do:
>
> Bar.new #=> #<Foo:0x0000010180bf90>
>
> and as you see, you get a Foo instance.

In fact, I don't understand well what's the problem with point 1 in the 
article. If you want to show the users how to use your class, document 
its usage. Don't just throw the code at them...


More information about the Digitalmars-d mailing list