// File: des12.C // // The dangers of destructors, part 12 // // Using copy constructor, overloading the assignment operator and // returning a reference causes memory leaks #include #include #include "string.h" #include "record3.h" Record& foo(Record& T) { Record *Rptr ; printf("\nIdentify T: ") ; T.id() ; Rptr = new Record("R") ; printf("\nIdentify R: ") ; return *Rptr ; } main() { Record S("S") ; Record P ; char *str1, *str2 ; printf("Identify S: ") ; S.id() ; printf("\nDo Assignment\n") ; 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() ; printf("\n\nEnd of main()\n\n") ; }