【发布时间】:2021-09-17 10:46:18
【问题描述】:
是否可以创建允许传递 arg 的“地址”(&) 运算符重载?重载运算符 [] 和运算符 & 之间的混合体。
所以常规的[]重载可以这样使用
val = myobj[arg];
地点:
SomeReturnType MyClass::operator[](SomeArgType i)
{
// Code to handle indexing
}
但如果我们想要一个指向该项目的指针,我正在寻找的将提供这种用途:
ptr = &myobj[arg];
也许这不能直接实现,我知道还有其他方法可以实现,但如果可以,我不知道语法。
【问题讨论】:
-
你有理由超载
&吗? -
这听起来像是一个 XY 问题。你能详细说明一下你为什么要这样做吗?
-
如果你把它设为
SomeReturnType& MyClass::operator[](SomeArgType i),你将获得一个指向带有ptr = &myobj[arg];的索引元素的指针,而不会重载地址运算符。 -
如果
operator[]通过引用返回,ptr = &myobj[arg];将正常工作。 -
这取决于
SomeReturnType是什么。您可以将其编码为项目的副本或对其的引用(具有一些有趣的功能)。
标签: c++ pointers operator-overloading