Topics covered include: wrapper classes, factory classes, generic arrays and maps, envelope/Letter classes, double dispatch, reference counting, dynamic scope, proxies, template constraints, template specialization, persistence, functors, continuations, receptors, deriving new stream types, generators, functional and declarative programming.
The course will run during second semester 1995, on Tuesdays, 10am - 12 noon, in lecture theatre S11.
Source code is available under the directory ~damian/public/Idioms/ (~damian/bruce/public/Idioms on the SGIs)
Booch, G, "Object-oriented Analysis and Design with Applications, 2nd Ed.", Benjamin-CummingsLippman, S, "C++ Primer, 2nd Ed.", Addison Wesley
Stroustrup, B, "The C++ Programming Language, 2nd Ed.", Addison Wesley
Stroustrup, B, "The Design and Evolution of C++", Addison Wesley
Meyers, S, "Effective C++", Addison Wesley
Coplien, J., "Advanced C++: Programming Styles and Idioms", Addison Wesley
Teale, S., "C++ IOStreams Handbook", Addison-Wesley
Yahoo is a good starting point.
Otherwise there's:
Title: C++ Annotations (ver 3.3.3)
Filename: cplusplus.html
Author: Frank Brokken & Karel Kubat
E-mail: frank@icce.rug.nl, karel@icce.rug.nl
URL: http://www.icce.rug.nl/docs/cplusplus/cplusplus.html
This web based tutorial is intended for knowledgeable users of C who
would like to make the transition to C++. This document presents an
introduction to programming in C++. It is a guide for programming
courses taught at State University of Groningen This document is not a
complete C/C++ handbook, but rather serves as an great addition to
other documentation sources. The reader should take note of the fact
that an extensive knowledge of the C programming language is assumed
and required.
This document continues where topics of the C programming language end,
such as pointers, memory allocation and compound types which makes it a
very good programming guide. I highly recommend this tutorial to any
individual who is really interested in becoming extremely knowledgeable
on C++ and a proficient programmer. Here is a listing of the chapters.
1. Introduction to C++
2. A first impression of C++
3. Classes
4. Classes and memory allocation
5. Static data and functions
6. Inheritance
7. Polymorphism, late binding and virtuality
8. Concrete examples of C++
9. Templates
Title: COMP.LANG.C++ FAQ
Filename: FAQ
Author: Marshall P. Cline, Ph.D.
E-mail: cline@parashift.com
URL: http://www.csse.monash.edu.au/~damian/c++FAQ.html
This is the complete FAQ for the Newsgroups COMP.LANG.C++ compiled by
Dr. Marshall Cline.
Nothing in the course will be tougher than the following example C++ program. If you can understand what it does and how it does it, you will breeze through "Advanced Idioms".
#/*__(__)(__)(___&_,____&__)/*/include/*/()>__(_)<___,____>*/<iostream.h>//::_()
#/*_(*__)&__(),(____*)&__(___*_,_&__);_(1<<1}*/define/*/*/__(_)/*__*/template##_
#/**____(___)*/define/*_+(1<<1));}_(__(__)){*/_(_)/* */class/**/_/*/___()__/*_*/
#/*&___+&_____(&___)*1>>1*1<<1*/define/*/*/_______/*/_______/*/void//*/____(__):
int __(___)[1<<1<<1];__()<_(___),_(____)>_(__(_)){___&__(__);____&__(_____);__(_
)(___&_,____&__);__()<_(_),_(__)>friend/*_*/_______/*/*/_____(_&_____,__&______)
;};_(__);main(){}__()<_(_),_(__)>_______/*_(__)+_<<_*/_____(_&_____,__&______){(
_______)__(_)<_,__>(_____,______);}__()/*__(*)_*/<_(___),_(____)>__(_)<___,____>
::__(_)(___&_,____&__):__(__)(_),__(_____)(__){__(__)>>/*/*/*__(___)>>*(1+__(___
));for(;*((1<<1)+__(___))+=1&*__(___)?(*__(___)>>=1,__(___)[1]):(__(___)[!+1]/=1
<<1)&&1>>1>>1,*(1+__(___))<<=1,*(__(___)+1););__(_____)<<*(__(___)+(1<<1));}_(__
(__)/*__(_&_(_&___)),*(&__[1>>1]/*___*__*/){public:__(__)(){_____(cin,cout);}}_;