如何区分对象和const对象

roo*_*ter 0 c++

我正在尝试在C++中实现模板链表,假设有Iterator和ConstIterator(不能修改列表).我需要调用这些方法返回一个与列表对象匹配的迭代器.例如,如果使用const列表调用begin(),它将返回ConstIterator,并且使用非const列表将返回Iterator.

我该怎么做?

谢谢.

Pub*_*bby 5

像这样:

ConstIterator begin() const;
Iterator begin(); //  ^^^^^
Run Code Online (Sandbox Code Playgroud)

此外,您可能想要添加cbegin:

ConstIterator cbegin() const;
Run Code Online (Sandbox Code Playgroud)

  • @rooster它使用重载决策规则.如果你用`const`对象调用它,它将返回一个`ConstIterator`.否则,它将返回一个正常的`Iterator`. (3认同)
  • 过载是由cv-qualifier选择的(即如果你的对象是const,则使用const-version(显然),如果它是非const,则由于规则确切地说明非const版本是优选的).仅在*重载决策之后,返回类型已知.因此它们不会影响所选择的过载. (3认同)