为什么[]的过载功能不起作用?

时间:2016-05-06 08:49:02

标签: c++ operator-overloading

#include "stdafx.h"    
#include <iostream>    
using namespace std;    
#include <string.h>    

class Array    
{    
public:    
    int Length;    
    char *Arrp;    
    Array(char *str)    
    {    
        Length=strlen(str);    
        Arrp=str;    
    }    
    char & operator[](int index);    
};    
    char & Array::operator[](int index)    
    {    
        if(index>=Length||index<0)    
        {    
            cout<<"Index "<<index<<" error."<<endl;    
            return Arrp[0];    
        }    
        return Arrp[index];    
    }    
int _tmain(int argc, _TCHAR* argv[])    
{    
    Array a("Good");    
    cout<<a.Arrp[6]<<endl;    
    return 0;    
}    

根本没有进入[]的重载功能。我将它与许多例子进行比较,但我写的东西从不起作用。

我该如何进一步处理?

1 个答案:

答案 0 :(得分:1)

您没有调用重载函数,而是直接读取数组本身。
尝试:

cout<<a[6]<<endl;