C++类中复制构造函数和对等号的重载
[| 2010/04/04 15:00]
经过一天多的调试,证明对于使用动态分配内存成员的类来说,复制构造函数和对等号的重载是第一重要的。
以前做东西总是避免使用动态分配的内存,最近要做一些关于大数的东西,决定使用动态分配的一块内存存放我的大数,结果导致的问题一天才解决。
刚开始没有重载等号和定义复制构造函数,结果总是在程序运行的最后报一个堆错误,经过跟踪发现问题发生在程序最后对象析构时有一块内存被释放两次。
看来不能偷懒,赶紧重载等号,结果发现问题依旧,郁闷之极。
多次跟踪程序后,发现在重载的加法运算最后。我重载的加法运算符最后返回一个临时对象,由于返回临时对象时有一个隐式的赋值过程,即将返回的局部变量赋值给临时对象。结果返回时局部变量析构,导致临时对象里成员的那块内存已经无效。
于是定义了复制构造函数,问题解决。。
以前做东西总是避免使用动态分配的内存,最近要做一些关于大数的东西,决定使用动态分配的一块内存存放我的大数,结果导致的问题一天才解决。
刚开始没有重载等号和定义复制构造函数,结果总是在程序运行的最后报一个堆错误,经过跟踪发现问题发生在程序最后对象析构时有一块内存被释放两次。
看来不能偷懒,赶紧重载等号,结果发现问题依旧,郁闷之极。
多次跟踪程序后,发现在重载的加法运算最后。我重载的加法运算符最后返回一个临时对象,由于返回临时对象时有一个隐式的赋值过程,即将返回的局部变量赋值给临时对象。结果返回时局部变量析构,导致临时对象里成员的那块内存已经无效。
于是定义了复制构造函数,问题解决。。
Anoymous
2011/02/13 15:10
的地方
Anoymous
2010/06/18 21:30
赞!!!
分页: 1/1 1