【发布时间】:2016-04-18 07:28:34
【问题描述】:
我用 C++ 编写了这个程序,如果我将最后两行放在注释中,它就可以正常工作:
a = b;
MyAr c(b);
我用我删除它的方法对其进行了测试。我认为问题出在*this 指针上,当我编译并运行程序时,它会闪烁片刻然后消失。你能帮我么?谢谢!
#include <iostream>
using namespace std;
class MyAr {
int *p;
int len;
public:
MyAr();
MyAr(int a);
MyAr(const MyAr& ob);
~MyAr();
MyAr& operator=(const MyAr& ox) { *this = ox; }
int& operator[](int i) { return p[i]; }
int length();
};
MyAr::MyAr() : p(0), len(0) {}
MyAr::MyAr(int a) : p(new int[a]), len(a) {}
MyAr::MyAr(const MyAr& ob) { *this = ob; }
MyAr::~MyAr() { delete p; }
int MyAr:: length(){
return len;
}
int main(){
MyAr a;
MyAr b(10);
for(int i=0; i< b.length(); ++i)
b[i] = i;
a = b;
MyAr c(b);
system("pause");
return(0);
}
【问题讨论】: