运算符在c ++中重载
可能重复:
运算符超载
嗨,大家可以请一个人提出一个关于运算符重载的好教程吗?
我正在通过这个关于运算符重载的代码,我有以下怀疑
码:
#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 ++,所以有这些怀疑....在此先感谢
<<
运算符 []
运算符,所以你可以使用你的yourobject[something]
。 它用于例如std::map
回答(1):你看过FAQ吗? http://www.parashift.com/c++-faq-lite/operator-overloading.html
每次你加入T operatorX
,其中X
可以是(),[],<<,>>,+,+=,=,--,++
等中的任何一个,这就是所谓的“操作符重载”。 它的确如它所说的那样 - 它使您能够在它超载的类上使用该运算符。 例如你的数组可以像这样访问:
Array myArr(10);
myArr[0] == 5;
myArr[1] == 10;
// ^^^ --- this is using the `operator[]` with an int parameter
链接地址: http://www.djcxy.com/p/12713.html
上一篇: operator overloading in c++
下一篇: Why is no return type specified in this function clearly returns?