关于c++重载=运算符的动态内存管理
#include <iostream.h>
#include <string.h>
#include"fstream.h"
class fraction
{
private:
int numerator,denominator;
char* description;
public:
fraction() //默认构造函数
{
numerator=1;denominator=1;
strcpy(description,"description unavailable");
description=new char[80];
}
fraction(int n,int d,char* point)
{
numerator=n;denominator=d;
description=new char[80]; ///分配内存
strcpy(description,point);
}
//
~fraction() //析构函数
{
delete [] description;
}
//
fraction(const fraction& f) //复制构造函数
{
numerator=f.numerator;
denominator=f.denominator;
strcpy(description,f.description);
}
//
void operator=(const fraction& frac) //重载=运算符
{
numerator=frac.numerator;
denominator=frac.denominator;
delete [] description;
description=new char[80];
strcpy(description,frac.description);
std::cout<<description;
}
print()
{
std::cout<<numerator<<" numerator "<<denominator<<" "<<description;
}
}
////////////////////////////////////
#include<iostream>
#include "fraction.h"
void main()
{
char de[20]="nihao";
fraction hao(23,32,de);
hao.print();
fraction newhao;
newhao=hao;
}
这个程序编译连接都没问题,只是运行以后,输出23 numerator 32 nihao 然后就弹出一个错误窗口
提示fraction.exe遇到问题 需要关闭!!我觉得是动态指针地址出现了问题,,但我总是想不通,请高手指点迷津!万分感谢!!!