无模板的运算符重载 作为C++新手,我的超载体验一直局限于复制、移动赋值运算符以及I/O流运算符。
现在,我必须为解析树节点类创建迭代器,这意味着我必须重载以下内容:无模板的运算符重载 作为C++新手,我的超载体验一直局限于复制、移动赋值运算符以及I/O流运算符。,c++,c++11,iterator,operator-overloading,C++,C++11,Iterator,Operator Overloading,现在,我必须为解析树节点类创建迭代器,这意味着我必须重载以下内容: == *(解引用运算符) ++ -- >= 我一直在网上搜索一些C++书籍,但到目前为止,我没有什么特别适合我的情况(即不引用模板),但是我已经知道,增量和减量运算符需要为“后缀”和“前缀”的情况“重载”/p>“两次”。 有人能解释一下我们是如何做到这一点的,以及背后的原因吗 谢谢:) 如果这是离题的话,我很抱歉。您可能想看看图书馆的 这将允许您定义成员函数equal(),derefinence(),increment(),de
我一直在网上搜索一些C++书籍,但到目前为止,我没有什么特别适合我的情况(即不引用模板),但是我已经知道,增量和减量运算符需要为“后缀”和“前缀”的情况“重载”/p>“两次”。 有人能解释一下我们是如何做到这一点的,以及背后的原因吗
谢谢:)如果这是离题的话,我很抱歉。您可能想看看图书馆的 这将允许您定义成员函数
equal()
,derefinence()
,increment()
,decrement()
,advance()
和distance()
。从这些成员中,库将生成==
,=
,*
,++
,-
,-=
,[]
以及为您提供的关系运算符
,=
您也可以手动定义它,但正如您所指出的,有很多代码重复(相等和不相等、增量前后)。此外,为了更好地使用标准库,迭代器还需要访问特定的typedef、仔细定义的返回类型和临时对象的生命周期管理。迭代器将以直接的方式为您处理所有这些细节
有一个工作过的示例,您可以尝试将其改编为树迭代器
注意:不必自己定义模板,但迭代器外观本身就是一个模板,您可以使用特定类型的树类实例化它。请参阅以获取初学者。@jrok谢谢。我会精力充沛地消耗它看看这里: