【发布时间】:2012-02-05 08:43:37
【问题描述】:
我了解大多数运算符重载,但成员访问运算符 ->、.*、->* 等除外。
具体来说,传递给这些运算符函数的是什么,应该返回什么?
运算符函数(例如 operator->(...) )如何知道所引用的成员是什么?它可以知道吗?它甚至需要知道吗?
最后,是否有任何 const 需要考虑的因素?例如,当重载 operator[] 之类的东西时,通常你需要一个 const 和 non-const 版本。成员访问运算符是否需要 const 和非 const 版本?
【问题讨论】:
-
我相信上面的 C++-Faq 涉及到上面 Q 中的所有问题。
-
const和非const版本的operator->不是必需的,但同时提供两者可能会有用。 -
@Als:FAQ 没有解释如何重载
->*和.*。事实上,它甚至没有提到他们!我觉得他们很少出现在常见问题解答中,但我很乐意将这个问题从常见问题解答中链接起来。 请不要因为FAQ的欺骗而关闭它! -
@sbi,我完全没能从你的(真棒)常见问题解答中找到指向这个问题的链接,最后问了一个重复的问题。你能让它更明显吗? (如果已经很明显,请道歉)。
标签: c++ operator-overloading c++-faq