#include
c++中,当创建一个对象副本做为函数参数时,普通的构造函数没有被调用,所调用的构造函数是按位复制的默认复制构造函数,它指向的是为原对象分配的动态内存。当对象副本给销毁时,析构函数被调用,同时对象被销毁,原对象指向的动态空间给被释放。这样一来下次调用一个不存在的对象时,就出错了。
解决方法:
1.用引用传递对象参数 function(student &obj)
这采用的是传址复制方式。
2.自定义复制构造函数 function(const student &obj)
如果你的类需要析构函数来释放资源,则他也需要一个自定义复制函数来完成值的传递。
上面两种方法看起来差不多。这样当创建一个对象副本做为函数参数时,自定义构造函数被调用,创建对象副本为之分配动态内存。当对象副本给销毁时,析构函数被调用,同时对象副本被销毁,释放内存。而原来的对象没有任何变化,程序正常运行。
你没把话说清楚。本来简单的问题让你讲复杂了~!
LikeLike
同意楼上的观点
这样的函数名很郁闷hanshu
LikeLike