C++ 下标运算符的重载

 

#include
using namespace std;
class stu
{
public:
    int a,
        b,
        c,
        nError;
    double d;
    stu()
    {
        a = 12;
        c = 13;
        b = 14;
        d = 45.45;
        nError = -1;

    }
    void* operator [](int m)
    {
        switch (m)
        {
        case 0:
            return &a;
        case 2:
            return &d;
        }
        return &nError;
    }
};
//int operator [](stu& db, int m)//[]只能在类内进行下标运算符的重载。
//{
//    switch (m)
//    {
//    case 0:
//        return db.a;
//    case 2:
//        return db.b;/*case 0:
//        return db.a;case 0:
//        return db.a;*/
//    default  :
//        break;
//    }
//    return -1;
//}
int main()
{
    /*stu db;
    cout <     db[2] = 155;
    cout << db[2] << endl;*/
    stu db;
    cout << *(double*)db[2]<     cout << *(int*)db[0]<     
    system("pause");
    return 0;
}

你可能感兴趣的:(c++,开发语言)