下面是一个示例代码,演示了如何编写一个下标非成员函数。
#include
#include
class MyClass {
private:
std::vector data;
public:
MyClass(const std::vector& input) : data(input) {}
// 下标非成员函数
friend int& operator[](MyClass& obj, int index) {
return obj.data[index];
}
};
int main() {
std::vector input = {1, 2, 3, 4, 5};
MyClass obj(input);
// 使用下标非成员函数
obj[0] = 10;
std::cout << obj[0] << std::endl; // 输出 10
return 0;
}
在上面的示例中,我们定义了一个名为MyClass
的类,其中包含一个std::vector
类型的私有成员变量data
。我们希望通过下标操作访问和修改data
中的元素,但是由于data
是私有的,我们无法直接在类外部使用下标操作符[]
。
为了解决这个问题,我们定义了一个下标非成员函数operator[]
,并将其声明为MyClass
的友元函数。这样,我们就可以在类外部使用obj[index]
的语法来访问和修改data
中的元素。
在main
函数中,我们创建一个MyClass
对象,并使用下标非成员函数来访问和修改data
中的元素。最后,我们输出修改后的元素值。