本文共 954 字,大约阅读时间需要 3 分钟。
class A{ int i;};class B{ A *p;public: B(){p=new A;} ~B(){delete p;}};void sayHello(B b){}int main(){ B b; sayHello(b);}
程序正常运行
程序编译错误
程序崩溃
程序死循环
class A{ int i;};class B{ A *p;public: B(){p=new A;} ~B(){delete p;} /* B(const B& ths){ p = ths.p; }*/};void sayHello(B x){}int main(){ B b; sayHello(b);}
class A{ int i;};class B{ A *p;public: B(){p=new A;} ~B(){delete p;} B(const B& other){ p = new A; //构建新的指针 *p = *(other.p); //将指向的内容复制,依然指向不同的位置 }};void sayHello(B b){}int main(){ B b; sayHello(b);}
转载地址:http://ygnab.baihongyu.com/