C++
C++ is the
object-oriented development of C with classes, member functions,
operator overloading, constructors etc. It's
the first language taught to undergraduates at CUED.
Starting C++
Local teaching
- 1A C++ Computing
- 1B C++ Computing
- Tutorial Guide to C++ Programming (for local 1A/1B students)
- CUED's C++ data book
- Frequently asked C++ questions (CUED)
- A handout on Debugging
- Basic optimising and profiling (CUED)
- More C++ (updated on July 5th, 2001) (PDF file, notes).
General Reference
- C and C++ Style Guides
- The list of Frequently Asked Questions is invaluable, but isn't designed for complete beginners.
- C++ Glossary
Tutorials
- The cplusplus.com tutorial
- FunctionX C++ tutorials
- Thinking in C++ (by Bruce Eckel - draft of a book)
- go4expert's C++ forum
- C++: A Dialog - a book by Steve Heller
- You Can Do It: A Beginner's Introduction to Computer Programming by Francis Glassborow
- C++ Programming for Scientists (Pozo and Remington)
Special topics
- C++ Tutorials from Deitel
- cplusplus.com's iostream library reference
- An Introduction to the Standard Template Library (STL) (Carlos Moreno)
- yolinux STL tutorial
Advanced WWW resources
General
- Dinkum Compleat Libraries (Standard C++ library reference, plus some overview articles)

- The Lysator list of C-related docs
- The C++ Source (Journal)
- C/C++ Reference
- C++ resources network
- Cetus C++ links
- Brighton Univ's C++ resources
- C++ Internet site list (Robert Davies)
- Scott Meyers' C++ articles
- C++ in the Real World: Advice from the Trenches
- Association of C & C++ Users (see their book reviews, etc.)
- Bjarne Stroustrup's homepage (papers, glossary and FAQs).
- Guru of the Week
Maths
- Techniques for Scientific C++ (Todd Veldhuizen)
- Available C++ Libraries FAQ
- Template Numerical Toolkit
- TooN: Tom's object oriented Numerics library
- Graph Template Library
- Blitz++ (library for scientific computing)
- LEDA (combinatorics)
- What Every Computer Scientist Should Know About Floating-Point Arithmetic
- Object-Oriented Numerics Page (libraries, articles, etc).
- Netlib's C++ material
- Scientific Computing: C++ versus Fortran
Pointers
- Pointers (by Todd Gibson)
- A Beginner's Guide to Pointers (by Andrew Peace)
- Smart Pointers - What, Why, Which? (by Yonat Sharon)
Programming
- Casting in C++
- Function Pointer Tutorials
- How to interpret complex C/C++ declarations (by Vikram A Punathambekar)
- C++ Portable Components
- C++ idioms
- SNIPPETS
- Optimizing C++ - a book by Steve Heller
- C++ in Action - a book by Bartosz Milewski
- the busy comp.lang.c++ (or see the Google group) and comp.lang.c++.moderated (or see the Google group) newsgroups.
Other Topics
- CERT C++ Secure Coding Standard
- MLC++ (Machine Learning Library)
- Boost.org - free, peer-reviewed, C++ libraries
- Technical Report on C++ Performance (ISO/IEC)

- the typename keyword
Local Information
General
- C++ for C programmers
- A look at some of the newer C++ features
- C++ Notes for intermediate students (especially CUED IIA students)
- C++ and the Standard Library
- C++ course (a crash course for CUED 3rd years and upward)
- C++ objects, containers, complex numbers and maps
Special topics
Types
- C++ and simple type conversion
- Casting in C++ (intermediate level)
- C++ type anomalies and special cases (intermediate level)
Variables
- Passing values in C++ (the use of const)
- C++ and static
- C++ and global variables
- C++ and enumeration
Classes
- C++ - a public/private issue
- C++: Visibility and Look-up (intermediate level)
- Virtuals and overloading (intermediate level)
- C++ Inheritance, Protection and Friends (intermediate level)
- C++ and Building Classes (a vector arithmetic example)
- C++ and Building Classes (a limited-range integer example)
Misc
- Bridge: A C++ programming Exercise (using vectors)
- C++ "for" loop teaching aid
- C++ "function" teaching aid
- C++ I/O
- sizeof
- Complex numbers
- Templates
- C++ Templates and Friends (intermediate level)
- Namespaces
- C++ Smart Pointers (intermediate level)
- bind1st and bind2nd (intermediate level)
- mem_fun (intermediate level)
- C++ vector memory and 2D vectors
- C++ constructors
- Trees, Graphs and C++
- C++: Nasty Tricks
- Mixing Languages on linux
- C++ and the main function
- C++ performance
Compilers and libraries
We have various IDEs (Integrated Development Environments) providing easy access to the compiler (which is g++ on the linux machines). Geany is used in the 1st year course. If you want to work away from CUED see
- Remote 1AC++ Computing
- Installing C++ compilers
- Installing C++ graphics libraries
- Remote access to the Engineering Department machines
Integrated Development Environments
An Integrated Development Environment (IDE) offers integrated editing, compiling, debugging and project-management facilities. On the teaching system we currently have Anjuta (version 1)
, Geany
, NetBeans
(with a C++ add-on), Eclipse
and codeblocks
![]() Anjuta 1. Click to zoom in
|
![]() Geany. Click to zoom in
|
![]() Netbeans. Click to zoom in
|
![]() Eclipse. Click to zoom in
|
![]() Codeblocks. Click to zoom in
|





