10 B() { cerr <<
"make B\n"; }
11 B(
B const &
b ) { cerr <<
"copy B\n"; }
12 virtual char type()
const {
return 'B'; };
19 D() { cerr <<
"make D\n"; }
20 D(
const D & d ) :
B( d ) { cerr <<
"copy D\n"; }
21 virtual char type()
const {
return 'D'; };
26 #define single( obj ) \
27 cerr << "\nsingle( " #obj " )\n"; \
28 const B & ref = obj; \
32 #define double( obj ) \
33 cerr << "\ndouble( " #obj " )\n"; \
35 catch ( const B & x ) { throw; }
42 catch(
B const & x ) { cerr <<
"Caught B is " << x.
type() <<
'\n'; }
55 cerr <<
"\nTesting double throws:\n";
59 cerr <<
"\nTesting single throws:\n";
virtual char type() const
virtual char type() const