|
|
1.1 root 1: #include "check.h"
2:
3: // check overriding of member functions
4:
5:
6: template <class T> class oc {
7: public:
8: T mem ;
9: // a vanilla function
10: foo() ;
11: // an operator
12: operator + (oc) ;
13: // a constructor
14: oc() ;
15: } ;
16:
17: // default class definitions
18: template <class T> oc<T>::foo() {return 1;}
19: template <class T> oc<T>::oc() {mem = 1;}
20: template <class T> oc<T>::operator + (oc<T>) {return 1;}
21:
22: // override them with the real definitions, for int instantiations
23: oc<int>::foo() {return 2;}
24: oc<int>::operator + (oc<int>) {return 2;}
25:
26: oc<int>::oc() {mem = 2 ;}
27:
28: oc<double> ocd ;
29: oc<int> oci ;
30:
31:
32: // *****************************
33:
34:
35: main () {
36: start_test(__FILE__) ;
37:
38: check(ocd.foo() == 1) ;
39: check((ocd + ocd) == 1) ;
40: check(ocd.mem == 1) ;
41:
42: check(oci.foo() == 2) ;
43: check((oci + oci) == 2) ;
44: check(oci.mem == 2) ;
45:
46: end_test() ;
47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.