From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public From: Ketil Z Malde Subject: Re: What is wrong with OO ? Date: 1997/02/12 Message-ID: #1/1 X-Deja-AN: 218214669 Sender: ketil@simba References: <5dopri$dei@news4.digex.net> Organization: University of Bergen, Norway Newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng Date: 1997-02-12T00:00:00+00:00 List-Id: jsa@alexandria (Jon S Anthony) writes: > Nick is correct here. This is a problem in C++ (along with > friendship) as it requires prescience on the part of the developer > and/or various maintenance problems: if you later decide it should be > virtual, you have to go back and _change_ the source of the parent > thereby changing the semantics in various other places. If you decide > you need a new "friend" you have to go back and _change_ the source > (which you may not even have accesss to!) Yes, I agree, the developer of a class needs to think about how the class is going to be used in the future. Usually, I don't think this is a great problem. E.g. if you wish to provide an interface only, you go with a virtual abstract method, if you wish to provide interface with a default (but not absolute) implementation, you go with virtual, and if you want to provide both interface and implementation (which usually means that the method is closely tied to the attributes of the (base) class) you submit a plain non-virtual method. Simple! Should the default case therefore be ``virtual''? There is of course also an issue with MI, but we'll look at that next period. :-) ~kzm -- If I haven't seen further, it is by standing in the footprints of giants