fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6. class CWin
  7. {
  8. protected:
  9. char id;
  10.  
  11. public:
  12. CWin(char i='D'):id(i)
  13. {
  14.  
  15. }
  16. CWin(const CWin& win)
  17. {
  18. id=win.id;
  19. }
  20. };
  21.  
  22. class CTextWin : public CWin
  23. {
  24. private:
  25. char *text;
  26.  
  27. public:
  28. CTextWin(char i, const char *tx):CWin(i)
  29. {
  30. text= new char[strlen(tx)+1];
  31. strcpy(text,tx);
  32. }
  33. ~CTextWin()
  34. {
  35. delete [] text;
  36. }
  37. void show_member()
  38. {
  39. cout << "Window " << id << ": ";
  40. cout << "text = " << text << endl;
  41. }
  42. void set_member(char i, const char *tx)
  43. {
  44. id=i;
  45. delete [] text;
  46. text= new char[strlen(tx)+1];
  47. strcpy(text,tx);
  48. }
  49. };
  50. int main(void)
  51. {
  52. CTextWin tx1('A',"Hello C++");
  53. CTextWin tx2(tx1);
  54.  
  55. tx1.show_member();
  56. tx2.show_member();
  57.  
  58. cout << "更改tx1物件的成員之後..." << endl;
  59. tx1.set_member('B',"Welcome C++");
  60.  
  61. tx1.show_member();
  62. tx2.show_member();
  63.  
  64. system("pause");
  65. return 0;
  66. }
Runtime error #stdin #stdout #stderr 0s 3432KB
stdin
Standard input is empty
stdout
Window A: text = Hello C++
Window A: text = Hello C++
更改tx1物件的成員之後...
Window B: text = Welcome  C++
Window A: text = 
stderr
sh: pause: not found
*** Error in `./prog': double free or corruption (fasttop): 0x08cad008 ***
======= Backtrace: =========
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb74b4e72]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76bb0)[0xb74b5bb0]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb769782f]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdaPv+0x1b)[0xb769787b]
./prog[0x804883e]
/lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb74588f5]
./prog[0x80488d1]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:03 1295705    /home/suhxwa/prog
08049000-0804a000 rw-p 00000000 08:03 1295705    /home/suhxwa/prog
08cad000-08cce000 rw-p 00000000 00:00 0          [heap]
b743d000-b743f000 rw-p 00000000 00:00 0 
b743f000-b75e8000 r-xp 00000000 08:03 1303839    /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75e8000-b75e9000 ---p 001a9000 08:03 1303839    /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75e9000-b75eb000 r--p 001a9000 08:03 1303839    /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75eb000-b75ec000 rw-p 001ab000 08:03 1303839    /lib/i386-linux-gnu/i686/cmov/libc-2.17.so
b75ec000-b75ef000 rw-p 00000000 00:00 0 
b75ef000-b760a000 r-xp 00000000 08:03 1303883    /lib/i386-linux-gnu/libgcc_s.so.1
b760a000-b760b000 rw-p 0001a000 08:03 1303883    /lib/i386-linux-gnu/libgcc_s.so.1
b760b000-b760c000 rw-p 00000000 00:00 0 
b760c000-b764d000 r-xp 00000000 08:03 1303836    /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b764d000-b764e000 r--p 00040000 08:03 1303836    /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b764e000-b764f000 rw-p 00041000 08:03 1303836    /lib/i386-linux-gnu/i686/cmov/libm-2.17.so
b764f000-b772b000 r-xp 00000000 08:03 1345926    /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b772b000-b772c000 ---p 000dc000 08:03 1345926    /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b772c000-b7730000 r--p 000dc000 08:03 1345926    /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b7730000-b7731000 rw-p 000e0000 08:03 1345926    /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18
b7731000-b7738000 rw-p 00000000 00:00 0 
b773a000-b773e000 rw-p 00000000 00:00 0 
b773e000-b773f000 r-xp 00000000 00:00 0          [vdso]
b773f000-b775e000 r-xp 00000000 08:03 1303796    /lib/i386-linux-gnu/ld-2.17.so
b775e000-b775f000 r--p 0001f000 08:03 1303796    /lib/i386-linux-gnu/ld-2.17.so
b775f000-b7760000 rw-p 00020000 08:03 1303796    /lib/i386-linux-gnu/ld-2.17.so
bfa55000-bfa6a000 rw-p 00000000 00:00 0          [stack]