如何从C++中自己的定义递归调用类成员函数?

Pal*_*shV 4 c++ class function c++11

我是C++的新手,我需要一个类成员函数来从自己的定义中调用自己,就像这样 -

class MyClass {
public:  // or private: ?
    // Some code here
    // ...

    void myfunction();

    // ...
};

void MyClass::myfunction()
{
    // Some code here
    // ...

    // Call MyClass::myfunction() here, but how?    

    // ...
}
Run Code Online (Sandbox Code Playgroud)

但我不知道它的正确语法,如何在不创建通常像这样的对象的情况下自己调用它 - object_name.member_function()如果可能的话?

并且,如果myfunction()属于public:或会有任何差异private:吗?

Cor*_*mer 10

由于该功能并非一成不变,你已经做的有一个实例进行操作

void MyClass::myfunction()
{
    // Some code here
    // ...

    this->myfunction();

    // ...
}
Run Code Online (Sandbox Code Playgroud)

你可以离开this->,我只是更清楚如何调用该函数.

  • 这里不需要`this->`,不是吗?由于范围是隐含的.有没有理由不建议简单地使用`myfunction();` (2认同)

dav*_*igh 5

myfunction()在类的范围内,所以你可以“简单地”调用它:

class MyClass {
public:
    // Some code here
    // ...

    void myfunction();

    // ...
};

void MyClass::myfunction()
{
    myfunction();
}
Run Code Online (Sandbox Code Playgroud)

但请注意,这会导致堆栈溢出。您需要一种方法来停止递归。