麻烦高手,看看函数如何返回对象的
class A{public: int len; char* p; A(int n) { len=n; p=(char*)malloc(n+1); memset(p,'a',n+1); printf("A\n"); } ~A() { delete p; len=0; printf("~A\n"); }};A CreateA() { A a(4); return a; }int main(){ A b=CreateA();//发现b并没有被赋值}int main(){ A b=CreateA();//发现b并没有被赋值 for(int i = 0; i <= 4; ++i) { printf("%c", b.p[i]); }}
[解决办法]
重载=吧。因为你的类内部使用了指针,所以用=来做,用指针开辟内存,然后拷贝数据吧
[解决办法]
int main(){ A b=CreateA();//发现b并没有被赋值 printf("%d\n",b.len);}
[解决办法]
返回的是传值 会发生拷贝
写个拷贝构造函数
[解决办法]
这样的类成员中有指针的类一定要写三个函数:
拷贝构造函数,重载赋值操作符,析构函数