我正在读一本关于C++操作符重载和我遇到下面的代码:C++操作符重载 - 查询
class Array {
...
public:
Array & operator << (int x) {
// insert x at the end of the array
}
};
下一页它说:该窗体的超载a << x << y << z ;
无线本地环路不行
所以它建议第二次调用被视为:((a << x)<< y ) << z
。所以它建议使用return * this;
但我没有得到如何返回*这功能在这里?请帮忙!
这里是整个代码:
#include <iostream>
#include <cstdlib>
using namespace std;
class Array {
int *a;
int capacity;
int size;
int incr;
public:
Array (int c=10) {
a = new int[c];
capacity = c;
for (int i=0; i<c; i++) a[i]=0;
size=0;
incr = c;
}
Array &operator << (int x) {
if(size<capacity) a[size++] = x;
else {
int *tmp = new int [capacity+incr];
for (int i=0; i<size; i++) tmp[i]=a[i];
delete[] a;
a = tmp;
a[size++]=x;
capacity = capacity+incr;
}
return *this;
};
int operator [] (int i) {
if(i<size) return a[i];
};
};
int main (int argc, char *argv[]) {
int s = atoi (argv[1]);
Array A (s);
for (int i=0; i<s; i++) A << i << i+1;
for (int i=0; i<s; i++) cout << A[i] << endl;
}
请使用四个空格缩进来格式化您的代码。请参阅http://stackoverflow.com/editing-help – SLaks 2011-04-28 17:49:49
我会照顾这在未来,感谢伙计 – 2011-04-28 17:50:36
我认为它应该是'数组&运算符<<'而不是'运营商<<' – 2011-04-28 17:51:38