读书人

送分 问个很坑爹的有关问题

发布时间: 2013-10-29 12:07:57 作者: rapoo

送分 问个很坑爹的问题
比如一个类重载了[]操作符
class A a;A[1]=10;

如果我只有一个指针 这个格式怎么写?
A *a; a->[1]=10????
[解决办法]
那的看你[]函数的返回值是什么类型,多数情况应该不能这样用
[解决办法]
指针的话,如果你写成a[1]或者其他的,它是不会调用到你的[]重载,会导致胃定义,只能用普通的对象调用的operator重载函数
[解决办法]


class C{
public:
int operator[](int i){
MessageBox(0,0,(LPCSTR)"[]",0);
return 0;
}
};

调用:
C c;
c[1];
C* cp=&c;
cp->operator[](1);
[解决办法]
建议
(*a)[1] = 10;

[解决办法]
引用:
建议
(*a)[1] = 10;

+1我一般也这么用
[解决办法]
引用:

class C{
public:
int operator[](int i){
MessageBox(0,0,(LPCSTR)"[]",0);
return 0;
}
};

调用:
C c;
c[1];
C* cp=&c;
cp->operator[](1);


引用:

class C{
public:
int operator[](int i){
MessageBox(0,0,(LPCSTR)"[]",0);
return 0;
}
};

调用:
C c;
c[1];
C* cp=&c;
cp->operator[](1);


++

读书人网 >C++

热点推荐