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: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,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 From: jsa@alexandria (Jon S Anthony) Subject: Re: What is wrong with OO ? Date: 1997/02/12 Message-ID: #1/1 X-Deja-AN: 218155840 sender: news@organon.com (news) references: <5dopri$dei@news4.digex.net> followup-to: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng organization: Organon Motives, Inc. 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: In article <5dopri$dei@news4.digex.net> ell@access5.digex.net (Ell) writes: > Nick Leaton (nickle@calfp.co.uk) wrote: > : richard@highrise.nl wrote: > : > > : > Virtual functions are also a kind of documentation. When declaring a > : > function virtual, the programmer is more or less saying "go ahead, > : > override this function if you like." > : > > > : The decision to make a function virtual assumes a knowledge of what > : users of your class are going to do. It akin to predicting the future. > : One of the problems with C++ is this very point. Should you, as a > : designer of a class restrict what someone else does with your class? > > How does making inherited classes able to override a parent function > "restrict"ing "what someone else does with" that class"? This seems really confused. How are the _inherited_ classes overriding a _parent's_ function? I suppose you meant subclasses. Anyway, you got it backwards. The point is that if you don't make the things virtual, you can't do the overrides (and other attendant stuff). So, there is this problem of either making everything virtual, and possibly providing misleading, inappropriate or possibly simply inefficient aspects, or not and then risking the mentioned problems. 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!) /Jon -- Jon Anthony Organon Motives, Inc. Belmont, MA 02178 617.484.3383 jsa@organon.com