嗨可以有人請建議操作符重載一個很好的教程?
我所經歷的操作符重載這個代碼,我有以下懷疑
代碼:
#include <iostream>
using namespace std;
class Array {
int *a;
int size;
int capacity;
public:
Array (int c) {a=new int[c]; size=0; capacity =c; } ;
Array & operator << (int x);
int operator [] (int i) {
if (i<size) return a[i] ;
else {
cout <<"Segmentation Fault Prevented!\n";
return -1;
}
};
};
Array &Array::operator << (int x) {
if (size < capacity) a[size++] = x;
else {
int *tmp = new int[size+capacity];
for (int j=0; j<size; j++)
tmp[j]=a[j];
delete [] a;
a = tmp;
a[size++]=x;
capacity=size+capacity;
}
return *this;
} ;
int main (int agrc, char *argv[]) {
Array b(10);
for (int i=0; i<100; i++) b << i;
b << 1 << 2 << 3;
for (int i=0; i<105; i++) cout << b[i] << endl;
}
我有這些疑惑:
- 能有一個人請上提出一個很好的教程運算符超載?
Array & operator << (int x);
是什麼意思?int operator [] (int i)
- 如果這是一個函數,爲什麼我們在這裏放方括號?Array &Array::operator
意味着什麼?- 什麼是
*this
?
請幫我...我是新來的C++等有這些疑慮.... 預先感謝
你想實現什麼? – bjornhol 2011-04-11 11:57:06
只是在網站上搜索,許多類似的問題已經被問到,有人甚至寫了關於運算符重載的常見問題解答:http://stackoverflow.com/questions/4421706/operator-overloading – 2011-04-11 11:58:26