Should operator overload methods be virtual?

Steven Schveighoffer schveiguy at yahoo.com
Tue Dec 1 06:16:57 PST 2009


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.



More information about the Digitalmars-d mailing list