Inheritance of purity

deadalnix deadalnix at gmail.com
Sat Feb 25 09:53:27 PST 2012


Le 25/02/2012 12:40, Timon Gehr a écrit :
> On 02/24/2012 01:41 PM, deadalnix wrote:
>> Le 18/02/2012 19:25, Walter Bright a écrit :
>>> On 2/18/2012 6:49 AM, kenji hara wrote:
>>>> After some thoughts, I agree that inheritance of pure @safe, and
>>>> nothrow is good feature.
>>>> But I disagree to const inference, because const attribute interacts
>>>> with overloadings.
>>>
>>> The const inheritance *only* happens if otherwise you'd get a covariance
>>> error. It does not change the meaning of any existing code that compiled
>>> successfully.
>>
>> yes but then, if a method is added to the base class, you will have a
>> changement of behavior of all overriden method, silently.
>>
>
> No. The compiler will explode in your face.
>

class A {
     void fun() const { ... }
}

class B : A {
     override void fun() { ... }
}

Now I change the class A to become :

class A {
     void fun() const { ... }
     void fun() { ... }
}

And suddenly, the override doesn't override the same thing anymore. 
Which is unnacceptable.


More information about the Digitalmars-d mailing list