代码如下
我的问题是
为什么输出结果是
mistake
sdafa-842150451
而不是
sdafamistake
a[0]
为什么先输出mistake然后在sdafa后返回了a[0]
而不是先输出sdafa后输出mistake 和a[0]
#include<iostream>
#include<cmath>
using namespace std;
class arr{
public:
arr(int s = 0);
~arr();
int & operator[](int i);
private:
int *p;
int size;
};
arr::arr(int s){
size = s;
if (size == 0){
p = NULL;
}
else
p = new int[size + 1];
for (int i = 1; i <= size; i++)
p[i] = 0;
}
arr::~arr(){
if (!p)
delete[] p;
}
int& arr::operator[](int i){
if (i<1 || i>size){
cout << "mistake" << endl;
return p[0];
}
return p[i];
}
int main(){
arr a(5);
cout << "sdafa" << a[9] << endl;
}onemoo
慕的地8582982
asd8532
相关分类