构造函数中定义的类函数的默认参数

Default argument for a class function defined in constructor

本文关键字:默认 参数 类函数 构造函数 定义      更新时间:2023-10-16

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

#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)

这是可能的,你只需要在类之外声明/初始化静态变量:

现场演示

#include <iostream>
class Foo
{ 
//..
};
int Foo::num; //<-- or 'int Foo::num = 0;'
int main()
{
//...
}