Royal Holloway, University of London logo
  • Staff
  • Students
  • About us
    • Welcome
    • Our campus
    • Our history
    • Press Office
    • Governance
    • Online store
    • Facts & figures
    • Job vacancies
    • Choir of Royal Holloway
    • Contact us
  • Study here
    • Undergraduate
    • Postgraduate
    • Research degrees
    • Scholarships
    • Accommodation
    • Open days
    • Welcome Week
    • Prospectus
    • Guide for parents
    • Schools & colleges
    • Passport Award
    • Discover Arts
    • Discover Science
    • Lifelong learning
    • Careers
  • Departments
    & Schools
    • Biological Sciences
    • Classics
    • Comparative Literature & Culture
    • Computer Science
    • Criminology & Sociology
    • Drama & Theatre
    • Earth Sciences
    • Economics
    • English
    • European Studies
    • Geography
    • History
    • Information Security
    • Management
    • Mathematics
    • Media Arts
    • Modern Languages, Literatures & Cultures
    • Music
    • Philosophy
    • Physics
    • Politics & International Relations
    • Psychology
    • Social Work
  • Student life
    • Accommodation
    • Campus & facilities
    • Social life
    • Student media
    • Students' Union
    • Sports & activities
    • Support, health & welfare
    • Jobs while you study
    • Sustainability
    • Videos
  • International
    • Why Royal Holloway?
    • Applying
    • English language & university preparation
    • Study abroad & exchanges
    • Your country
    • Fees & scholarships
    • After applying
    • Support for international students
    • Information for partners
    • News
    • Virtual Open Day
    • Contact us
  • Research
    • Current research
    • Current research students
    • Research opportunities
    • Research support
    • Departments & Groups
    • REF2014
    • Pure support
    • News
    • Events
    • Commercialisation seed funds
    • Women in research
  • For business
    • Conferences & hospitality
    • Consultancy
    • Enterprise centre / incubation
    • Licensing / commercialisation
    • Research & business
    • Interns / graduate recruitment
    • CPD
  • Alumni
    • News
    • Events & reunions
    • Getting involved
    • Giving to the College
    • Benefits & services
    • Notable alumni
    • Our alumni
    • American Foundation
    • Staying in touch
    • Higher magazine
    • The Curiosity Project
    • Contact us

C++

C++ is a large language based on C that adds classes (with both statically and dynamically despatched methods, and allowing multiple inheritance); exception handling; generic programming through templates; operator overloading and a standard library of container classes and algorithms. The language (originally called 'C with classes') was developed by Bjarne Stroustrup at Bell Labs starting in 1979.

The history of C++ is described by Stroustrup in a paper from the HoPL II (History of Programming Languages II) conference which you can read here. That paper was subsequently extended to a full length book: 'The Design and Evolution of C++', Bjarne Stroustrup; Addison Wesley; 1994 ISBN 0-201-54330-3.

A notable of feature of C++ is it's ongoing evolution. Commercial and free compilers for C++ have at various points in its history both lagged and led the standardisation efforts which can lead to a lot of confusion.

Broadly, at the time of writing (October 2006) there are seven generations of C++.

  1. [Pre-1985: C with classes]
    Stroustrup originally focussed on adding abstract data types to C by using the class concept pioneered by Simula. Inheritance was supported, but not virtual functions, and hence there was no runtime polymorphism. Most people (including Stroustrup) would not call such a language object oriented. This language was internal to Bell Labs.

  2. [1985: Cfront Release 1.0]
    The first commercial release of the renamed C++ was in 1985. Virtual functions had been added and C++ was marketed as an object oriented extension to C. C++ remains essentially a superset of C90 (although there are some subtle incompatibilities for all you language lawyers out there).

    This version is described in 'The C++ programming Language', Bjarne Stroustrup; Addison Wesley; 1986 ISBN 0-210-12078-X.

  3. [1989: Cfront Release 2.0]
    The second release added multiple inheritance, abstract classes and a large number of other features such as pointers to members.

  4. [1990: The annotated reference manual (ARM)]
    This was not a language version per se but a document which was to become the basis of the standardisation effort. Published as 'The Annotated C++ Reference Manual', Margaret A. Ellis and Bjarne Stroustrup; Adison Wesley; 1990 ISBN 0-210-51459-1, the ARM described both the features of Release 2.0 and features that had not yet been implemented, including exceptions and templates. It is really both an informal standards document and a roadmap for future development.
  5. [1991: Cfront Release 3.0]
    The third release incorporated features from the ARM, including templates for generic programming and exception handling.

    This version is described in 'The C++ programming Language, second edition', Bjarne Stroustrup; Addison Wesley; 1991 ISBN 0-210-53992-6.

  6. [1998: C++98 (ISO/IEC 14882:1998)]
    ANSI established committee X3J16 to standardise C++ in 1989. The final draft standard was put out to public vote in 1997, and ratified in 1998. A corrected standard was published in 2003 as ISO/IEC 14882:2003.

    This version is described in 'The C++ programming Language (Special Edition)', Bjarne Stroustrup; Addison Wesley; 2000 ISBN 0-201-70073-5 and in 'The C++ programming Language (Third Edition)', Bjarne Stroustrup; Addison Wesley; 1997 ISBN 0-201-88954-4. The 'Special Edition' is hardbound and contains two extra appendices and a large number of typographical fixes.

    This is the grammar from Annex A of the 1997 public review document. Since this draft was unanimously accepted, we believe that it is the same grammar as in the actual standard, but we have not yet checked against an official copy.

    ansi_cpp_prd97.raw raw grammar from the typeset document
    ansi_cpp_prd97.gex grammar rules extracted using gramex V1.2

  7. [200x: C++0x (ISO WG 21 C++0x draft standard)]
    Standardisation efforts continue. Most people expect only small changes to the language, but significant extensions to the library. For Stroustrup's own take on things, see The design of C++0x. You can keep up with the current thinking by checking the WG21 committee pages.

    The main output so far has been 'Technical Report 1' which concerns proposed extensions to the library, which include regular expressions, safe pointers and better random number generation facilities.

    This is the grammar from Annex A of the 2005 draft standard.

    ansi_cpp_draft_2005.raw raw grammar from the typeset document
    ansi_cpp_draft_2005.gex grammar rules extracted using gramex V1.2

    This is the grammar from Annex A of the 2006 draft standard.

    ansi_cpp_draft_2006.raw raw grammar from the typeset document
    ansi_cpp_draft_2006.gex grammar rules extracted using gramex V1.2


For an interesting perspective on C++ syntax (which many find ugly) see A Modest Proposal: C++ Resyntaxed by Bern Werther and Damian Conway.
© Royal Holloway University of London Egham, Surrey, TW20 0EX

T: +44 (0)1784 434455
  • Contact
  • Location maps
  • Media enquiries
  • Vacancies
  • Careers Service
  • IT Services
  • Library
  • Social media
  • CampusAnywhere
  • Cookies
  • Site map
  • Terms & conditions