运行到赋值函数程序就死??
- C/C++ code
#include <string>#include <iostream>using namespace std;class CL{ public: int ival; int *ip; CL(int *ip,int ival):ip(ip),ival(ival){ } CL():ival(0),ip(0){ } CL(const CL &cl){ this->ival=cl.ival; *ip=*(cl.ip); } CL &operator=(const CL& cl){ ival=cl.ival; *ip=*(cl.ip); return *this; }};int main(){ int i_var=10; int i_p=1; CL cl1(&i_p,i_var); //CL cl2=cl1; CL cl2;//使用默认构造函数进行初始化。 cl2=cl1;[color=#FF0000]//运行到这里就死,为什么啊????[/color] cl1.ival=99; *(cl1.ip)=999; cout<<"******cl1******"<<endl; cout<<cl1.ival<<endl; cout<<*(cl1.ip)<<endl; cout<<"***************"<<endl; cout<<endl; cout<<"******cl2******"<<endl; cout<<cl2.ival<<endl; cout<<*(cl2.ip)<<endl; cout<<"***************"<<endl; return 0;}[解决办法]
无参构造中,指针在初始化列表中被赋NUll(0),即CL2中含NULL指针成员。 拷贝赋值时,将1赋给一个NULL指针的目标。
对NULL指针取目标应该是错误点
[解决办法]
[解决办法]