重载成员函数以接收分配的值?

问题描述

我想创建一个类的两个方法来访问和修改该实例中的某些数据。

例如:

int val = image.at(row,col);
image.at(row,col) = 255;

是否可以重载该函数,以便在调用image.at(row,col)时允许赋值?

解决方法

您不必为此编写2个方法。只要at返回可以分配给它的值(即l值),相同的函数就可以访问和修改数据:

struct Image 
{
   int& at(int,int);
// ^^^^ 
};

但是,当要访问其数据的对象是const对象时,您应该提供一个重载:

struct Image 
{
   int& at(int,int);
   int const& at(int,int) const;  // for const objects
};