Newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng
Path: cantaloupe.srv.cs.cmu.edu!rochester!cornellcs!newsstand.cit.cornell.edu!portc01.blue.aol.com!portc02.blue.aol.com!howland.erols.net!surfnet.nl!news.unisource.nl!news.tip.nl!news
From: richard@highrise.nl
Subject: Re: What is wrong with OO ?
X-Nntp-Posting-Host: 143.177.122.2
Message-ID: <E5DuvE.LyC@tip.nl>
Sender: news@tip.nl (The News User)
Reply-To: dion@multitask.com.au (Dion Gillard)
Organization: Highrise Internetworking
X-Newsreader: IBM NewsReader/2 v1.02
References: <JSA.97Jan1181506@alexandria> <E3I8GL.AuH@research.att.com> <32D11FD3.41C6@wi.leidenuniv.nl> <E3pzy4.DHE@research.att.com> <01bbd23a$5b667cc0$LocalHost@christophe-leph> <01bc0269$3fd55b20$ca61e426@DCorbit.solutionsiq.com>
Date: Mon, 10 Feb 1997 10:38:02 GMT
Lines: 33
Xref: glinda.oz.cs.cmu.edu comp.lang.c++:246904 comp.lang.smalltalk:51323 comp.lang.eiffel:18316 comp.lang.ada:57378 comp.object:60959 comp.software-eng:53587

In <01bc0269$3fd55b20$ca61e426@DCorbit.solutionsiq.com>, "Dann Corbit" <dcorbit@solutionsiq.com> writes:

>I remember hearing similar arguments about PL/1 many years ago.  The line
>of reasoning went something like this, "It is such a complex language, that
>the average programmer can never become proficient in it."  This is, of
>course, pure bologna.  With an advanced language you can be proficient
>right away.  You don't **have** to use the advanced features.  Start with
>the simple things and work forward.  Classes, for instance, are simple. 
>There are some advanced features of classes like whether a member should be
>virtual or pure virtual to create an abstract class.  But you don't need to
>know that to learn the language and actively use it as a productive tool.

I doubt that a lot of people know everything about C++, even when they
have been using it for years. Most programmers don't use a lot of 
features of a language simply because they don't *need* them. What
is interesting for one leaves someone else totally cold.

>And as to why virtual/non-virtual (IMO):
>Something that is virtual can be replaced and/or shared.  If you need these
>capabilities, then make it virtual.  A pure virtual member will cause a
>class to be abstract.  This is valuable if you have a class that is really
>not able to exist as a useful entity until it has been specialized by a
>class that inherits from it (in other words, you don't want to create a
>stand-alone instance of the abstract class).
>

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."

Greetz,

RS
