C++ 带[]运算符重载的模板类
我使用一个模板类C++ 带[]运算符重载的模板类,c++,operator-overloading,C++,Operator Overloading,我使用一个模板类 template <class T> class Array { enum {size = 10}; T A[size]; public: T& operator [] (int index) { return A[index]; } }; 一切正常。 我想知道如何从我的程序中调用[]运算符?可以像调用任何其他方法一样调用[]运算符:myArray.operator[]3=5,或者使用常规数组语法:m
template <class T>
class Array
{
enum {size = 10};
T A[size];
public:
T& operator [] (int index)
{
return A[index];
}
};
一切正常。
我想知道如何从我的程序中调用[]运算符?可以像调用任何其他方法一样调用[]运算符:myArray.operator[]3=5,或者使用常规数组语法:myArray[3]=5。以这种方式调用时,括号中的值是函数的参数。是否创建数组实例并对其使用[]运算符?数组myArray;myArray[5]=7;在Google上搜索,但我的问题是函数调用在这里是如何工作的?当您编写myArray[3]时,它将调用myArray上的运算符[]方法,参数为3。我不知道该怎么解释。这只是一个普通的方法,可以用特殊的语法调用。如果我有一个函数funcint n,它被称为func10。但这里我们在[]运算符中传递整数。那么这个函数的名称混乱是如何工作的呢?@Nagappa您可以想象,在编译过程中,括号被正常的函数语法替换,然后再发生其他事情。我不认为这是实际发生的事情,但你明白了。myArray[x]->myArray.operator[]x。