// File: des10b.C // // The dangers of destructors, part 10 version b // // Using reference parameters and reference return values solves // our problems on (most ?) compilers. #include #include #include "string.h" #include "record2.h" Record& foo(Record& T) { Record *Rptr ; Rptr = new Record("R") ; printf("\nIdentify T: ") ; T.id() ; printf("\nIdentify *Rptr: ") ; Rptr->id() ; return *Rptr ; } main() { Record S("S") ; char *str1, *str2 ; printf("Identify S: ") ; S.id() ; printf("\nDo Assignment\n") ; Record& P = foo(S) ; printf("Finished Assignment\n\n") ; str1 = strdup("Hello") ; printf ("str1=(%p,\"%s\")\n", str1, str1) ; str2 = strdup("World") ; printf ("str2=(%p,\"%s\")\n", str2, str2) ; printf("Identify S: ") ; S.id() ; printf("Identify P: ") ; P.id() ; delete &P ; printf("\n\nEnd of main()\n\n") ; }