重载[]运算符基础知识

时间:2014-03-16 21:08:34

标签: c++

我做了这个例子来理解[]运算符的使用,但是这段代码给了我一个错误 "运算符声明为函数数组","示例[0]"中的运算符[]不匹配和这样相同的错误。请告诉我我做错了什么,请解释一下。提前致谢

#include <iostream>
using namespace std;

class example
{ 

private:
        double temp[8];
public:
    example () 
    {  
          temp[0] = 3.5; temp[1] = 3.2;  temp[2] = 4;    temp[3] = 3.3; 
          temp[4] = 3.8; temp[5] = 3.6;  temp[6] = 3.5; temp[7] = 3.8;
    }


    double& opeator[] (int Index);
};

double& example::operator[](int Index)
{       
        return temp[Index];        
}


int main ()
{
    example Example;
    Example[0] = 4;

    double temp = Example[4];

}

1 个答案:

答案 0 :(得分:2)

此:

double& opeator[] (int Index);

应该是:

double& operator[] (int Index);
//         ^

  

请同样我也不明白[]运算符的使用,请稍微解释一下。我读了这个并做了这个例子来理解但仍然有理解的问题。

好吧,operator[]模拟数组索引行为特别有用。标准库在“类似数组”的类上使用此运算符,如std::vectorstd::deque

您的示例(显然除了类型):

double& example::operator[](int Index) {       
        return temp[Index];        
}

是运营商的完美应用。我建议你改变的唯一方法是Index的类型:它应该是std::size_t

有关运算符重载的更多信息,请参阅this question