不死奇迹 2015-09-09 16:37 采纳率: 33.3%
浏览 1460

定义类的指针变量如何重载类的拷贝构造函数和重载=号

#ifndef LIST_OPRATOR
#define LIST_OPRATOR
#include
using namespace std;
class Complex
{
private:
int a;
char* p;

public:
void operator=(Complex* c2);
Complex(const Complex* c2);
Complex(int a,char* m);
~Complex()
{
cout<<"析构"<<" "<<p<<endl;
delete p;
p=NULL;//避免野指针
a=0;
};

};
#endif
Complex::Complex(int a,char* m)
{
this->a=a;
p=new char[strlen(m)+1];
strcpy(p,m);
}

Complex::Complex(const Complex* c2)
{
p=new char[strlen(c2->p)+1];
if(c2->p!=NULL)
{
strcpy(p,c2->p);
}
a=c2->a;
}

void Complex::operator=(Complex* c2)
{
if(p!=NULL)
{
delete p;
p=NULL; //避免野指针
}
if(c2->p!=NULL)
{
p=new char[strlen(c2->p)+1];
strcpy(p,c2->p);
}
a=c2->a;
}
void main993()
{

Complex* c1=new Complex(1,"abcd");
Complex* c2=c1;
Complex* c3=new Complex(2,"lkjh");
c2=c3;
delete c1;
delete c2;
delete c3;
system("pause");
}

void main()
{
main993();
}

  • 写回答

3条回答 默认 最新

  • 不死奇迹 2015-09-09 16:38
    关注

    delete c3时就down掉来,分布调试时没有进入任何重载函数,求解指针对象的重载如何实现

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?