c++的一些陷阱(1)

 class String {
public:
String(char* pp) :sz(strlen(pp)), p(new char[sz+]) { strcpy(p,pp); }
~String() { delete[] p; }
char& operator[](int i) { return p; }
private:
int sz;
char* p;
}; void f(char* x)
{
String s1(x);
String s2 = s1;
}

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

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

参考:这里

上一篇:【Android学习】自定义Android样式checkbox


下一篇:Ninject之旅之十二:Ninject在Windows Form程序上的应用(附程序下载)