Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-03-24 07:24:38


Dave Gomboc <dave_at_[hidden]> writes:

>> > Since you advocate elsewhere that exception classes be derived
>> > from std::exception, the answer is because otherwise LSP would
>> > be violated.
>>
>> You can't access the derived class' assignment operator through a
>> pointer/reference to a polymorphic base, so that point is moot.
>
> Well, you're the expert on this. (I thought you could catch a reference
> to an exception, dynamic_cast it downwards, then use the assignment
> operator. Sure, this would be a stupid thing to do, but if possible I
> certainly can imagine some few misguided souls who haven't yet grokked C++
> exception handling doing so.)

You can do it, but then LSP doesn't matter since you know the concrete
type.

>> LSP is weird anyway. What's the point of polymorphism if you're not
>> going to change the behavior of the class in some observable way? If
>> the derived class were transparently substitutable for the base class
>> it wouldn't be much good, would it?
>
> I disagree here; "transparently substitutable" != "observable behaviour is
> identical".

Can you clearly define the difference? I don't think I've ever read a
description of LSP which doesn't leave that question completely
unaddressed.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk