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: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public From: ohk@edeber.tfdt-o.nta.no (Ole-Hjalmar Kristensen FOU.TD/DELAB) Subject: Re: What is wrong with OO ? Date: 1997/02/13 Message-ID: #1/1 X-Deja-AN: 218461866 References: <5dopri$dei@news4.digex.net> Organization: Telenor Online Public Access Newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng Date: 1997-02-13T00:00:00+00:00 List-Id: In article <01bc183a$831b3760$1544db03@gecmf-pc-eddjab.gecmf.capital.ge.com> "John Brady" writes: Ell wrote in article <5dopri$dei@news4.digex.net>... > 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"? > I think the point he is making is that if you DON'T make the function virtual, then other programmers CAN'T override it. Therefore, C++ This is patently wrong. You can override it as much as you like whether the function is virtual or not. What you don't get if it's not defined to be virtual in the base class is run time dispatching. If the function is not virtual, and you have a pointer to the base class which is actually pointing to an object of the derived class, the function of the *base* class will be called. If the function is defined as virtual in the base class, the actual object being pointed to will decide which method will be called. programmers are forced to commit early to making a class overrideable or not. (I program in Delphi, and the same problem arises). The C++ critique, at http://www.progsoc.uts.edu.au/~geldridg/cpp/cppcv3, goes into this point in some depth. -- John Brady john.brady@gecmf.capital.ge.com