在构造函数中定义的 class 函数的默认参数

Default argument for a class function defined in constructor

是否可以定义将用作构造函数中默认参数的变量?

#include <iostream>
class Foo
{
public:
    Foo(int x) { num = x;}
    void print(int y = num)
    {
        std::cout << y << std::endl;
    }
private:
    static int num;
};
int main()
{
    Foo f(5);
    f.print();
}

编译成功,但出现链接错误 LNK2001 unresolved external symbol "private: static int Foo::num" (?num@Foo@@0HA)

有可能,你只需要declare/initializeclass外的静态变量:

Live demo

#include <iostream>

class Foo
{ 
    //..
};

int Foo::num; //<-- or 'int Foo::num = 0;'

int main()
{
    //...
}