【发布时间】:2013-12-08 17:32:57
【问题描述】:
我重载了下标运算符和赋值运算符,我试图为赋值运算符获得正确的值
例子
Array x;
x[0]=5;
通过重载下标运算符,我可以获得值 0,但是当我重载赋值运算符时,它会执行赋值但它不使用我的重载函数,因为变量 2 应该具有值 5。
class Array
{
public:
int *ptr;
int one,two;
Array(int arr[])
{
ptr=arr;
}
int &operator[](int index)
{
one=index;
return ptr[index];
}
int & operator=(int x){
two=x;
return x;
}
};
int main(void)
{
int y[]={1,2,3,4};
Array x(y);
x[1]=5;
cout<<x[0]<<endl;
}
【问题讨论】:
-
我认为@Dietmar Kühl 的答案是最好的答案。因为它还显示了运算符 int() 的用法,所以
cout<<x[0]<<endl;也可以工作。也许这应该是公认的答案。
标签: c++ operator-overloading overloading assignment-operator subscript