gpt4 book ai didi

c++ - const 函数可以在 C++ 中递归,只要它修改可变变量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:46:13 26 4
gpt4 key购买 nike

我可以在我的类中有一个递归的 const 函数吗?

最佳答案

是的。 const 总是可以再次调用 const 函数。您甚至不需要可变变量就可以使它有意义,例如,您可以通过引用将事物传递给递归函数并根据您的状态修改它们。 (或静态变量、非成员或其他返回非常量引用或指向非常量事物的指针的函数....)

遍历链表的最小“有用”示例(灵感来自 flownt 对其他答案的评论)。 (虽然递归不是正常进行链表遍历的好方法)

#include <memory>
#include <iostream>

class Item {
public:
Item(const int& in, Item *next=NULL) : value(in), next(next) {}
void sum(int& result) const {
result += value;
if (next.get())
next->sum(result);
}
private:
int value;
std::auto_ptr<Item> next;
};

int main() {
Item i(5, new Item(10, new Item(20)));
int result = 0;
i.sum(result);
std::cout << result << std::endl;
}

您还可以根据您的问题,通过重写 sum() 来避免使用结果引用:

  int sum() const {
return value + (next.get() ? next->sum() : 0);
}

关于c++ - const 函数可以在 C++ 中递归,只要它修改可变变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com