c++的一些陷阱(1)

 1 class String {  
 2 public:  
 3     String(char* pp) :sz(strlen(pp)), p(new char[sz+1]) { strcpy(p,pp); }  
 4     ~String() { delete[] p; }  
 5     char& operator[](int i) { return p; }  
 6 private:  
 7     int sz;  
 8     char* p;  
 9 };  
10 
11 void f(char* x)  
12 {  
13     String s1(x);  
14     String s2 = s1;  
15 }

14:String s2 = s1,s2调用默认拷贝构造函数,s2.p 和 s1.p是指向同一个内存。所以会存在对同一块内存的两次delete

写带指针成员变量的类要注意才行

参考:这里

原文地址:https://www.cnblogs.com/riversHahaha/p/4573820.html