home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / lang / cplus / 17951 < prev    next >
Encoding:
Text File  |  1992-12-14  |  4.3 KB  |  101 lines

  1. Newsgroups: comp.lang.c++
  2. Path: sparky!uunet!munnari.oz.au!bunyip.cc.uq.oz.au!marlin.jcu.edu.au!coral.cs.jcu.edu.au!spuler
  3. From: spuler@coral.cs.jcu.edu.au (David Spuler)
  4. Subject: List of features of C++ versions
  5. Message-ID: <spuler.724376569@coral>
  6. Sender: news@marlin.jcu.edu.au (USENET News System)
  7. Organization: James Cook University
  8. Date: 14 Dec 92 23:42:49 GMT
  9. Lines: 90
  10.  
  11.  
  12.   [Sorry if this is a duplicate post. We seem to have local problems]
  13.  
  14. I've been trying to compile a list of the various features added by the
  15. different version numbers in the definition of the C++ language.
  16. My list so far is below.. any additions, corrections are welcomed.
  17. Some of the entries are prefixed with ?? -  are these entries correct?
  18.  
  19. I've built this list from a number of sources including:
  20.  
  21. Stroustrup, 1st edition
  22. Stroustrup, 2nd edition
  23. Ellis & Stroustrup, ARM
  24. comp.lang.c++ FAQ
  25.  
  26.  
  27. 1.1 changes
  28. ===========
  29. pointers to class members added
  30. protected keyword added
  31. ?? private keyword added   (private isn't listed in Stroustrup 1st edn)
  32.  
  33.  
  34. 1.2 changes 
  35. ===========
  36. ability to overload based on unsigned long/int
  37.  
  38.   
  39. 2.0 changes (1989??)
  40. -----------
  41.    <iostream.h> added to supercede <stream.h>
  42.    multiple inheritance
  43.    name of base class in constructor list, even for single inheritance 
  44.    virtual base classes added
  45.    type-safe linkage added
  46.    overload made obsolete, but still supported
  47.    new function matching rules - some changes
  48.    ?? address of overloaded function
  49.    long names - 31 char limit problem fixed in Cfront 2.0
  50.    abstract classes and pure virtual functions - support added for, explicit support for the =0 syntax
  51.    memberwise copying for op= and copy constructor
  52.    overload new and delete on class basis (assignment to this made obsolete)
  53.    ?? overloading global new/delete made obsolete?
  54.    placement specifier for new operator (added in 2.0 ??)
  55.    explicit destructor calls (added in 2.0 ??)
  56.    new operators to overload:  comma operator, -> , ->+ operator
  57.    pointers to members use clarified, and new operators added: .* and ->*
  58.    const/volatile member fns added
  59.    static member fns added
  60.    __cplusplus   ?? added in 2.0??
  61.    non-constant expression initializers allowed for static/global objects
  62.    initialization of static data members & static class members - explicit support for;  initializers allowed for static class members
  63.    data objects can be volatile  (also in ANSI C) ?? added in 2.0?
  64.    initialization of automatic aggregates allowed (although not actually disallowed pre-2.0, many didn't support it)
  65.    ?? exceptions added partially? e.g.  the "catch" keyword reserved for future use
  66.    enum declarations local to classes - can be private/protected
  67.    anonymous unions at file scope must be static
  68.    default args can't be declared twice, even if same values (must be in first declaration/definition)
  69.    default args can be unrestricted expression - previously had to be constant expressions
  70.    virtual fns allowed to be redefined in derived class as different prototype (different parameter types)
  71.    ?? error if new derived virtual fns differs only by return value type
  72.    global object initialization - order of appearance in each file (but no cross-file order specified)
  73.    char constants have type char ?? added 2.0
  74.  
  75. 2.1 changes
  76. -----------
  77.     class-local declarations - enum/class/typedef
  78.     delete[] notation (don't need the size)
  79.     constructors with all arguments having default arguments are now
  80.         called as if they were the default (zero argument) constructor
  81.     objects in conditional statement blocks are local to the block, not
  82.         to the statement:  if(..) { int i; }  else {int i; // now ok
  83.     overloading can distinguish prefix/postfix -- and ++
  84.     pure virtual member functions implicitly inherited as pure virtual
  85.     constructor notation for intrinsic types: int i(20);  char *p("adfds");
  86.     unions can contain access specifiers
  87.  
  88. 3.0 changes
  89. -----------
  90.     multiple inheritance
  91.     templates
  92.     exceptions (not yet!)
  93.     protected base classes       class A : protected B { ..};
  94.     fully nested classes
  95.     virtual base class dominance  p592 Lippman
  96.         ?? initialization of single dimension array of class objects with constructors taking all default arguments (source: C++ FAQ)
  97.         ?? use of operators &&, ||, ?: with expressions requiring temporaries of class objects containing destructors (source: C++ FAQ)
  98.         ?? implicit named return values  (source: C++ FAQ)
  99.  
  100.  
  101.