Should operator overload methods be virtual?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Dec 1 10:53:37 PST 2009


Steven Schveighoffer wrote:
> On Fri, 27 Nov 2009 18:32:21 -0500, Walter Bright 
> <newshound1 at digitalmars.com> wrote:
> 
>> Making them not virtual would also make them not overridable, they'd 
>> all be implicitly final.
>>
>> Is there any compelling use case for virtual operator overloads? Keep 
>> in mind that any non-virtual function can still be a wrapper for 
>> another virtual method, so it is still possible (with a bit of extra 
>> work) for a class to have virtual operator overloads. It just wouldn't 
>> be the default.
> 
> I use virtual operator overloads in dcollections.  Such as opCat and 
> opAppend.
> 
> collection1 ~= collection2; // 2 different collection types, using 
> interfaces instead of templates to avoid code bloat.
> 
> Also, opApply should be by default virtual, since it's not a true operator.

Would you put up with a couple of forwarding functions?

Andrei



More information about the Digitalmars-d mailing list