|
|
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.