class TestClass
{
public:
TestClass() = default;
~TestClass() = default;
public:
int func(int j = i)
{
cout << i << endl;
}
private:
int i = 1;
};
比如这样 这样会报错 为什么?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
原答案部分有误,重新回答一下。
静态变量可以作为默认实参,不需要一定是常量。实例如下:
原答案
静态常量可以,如以下两种定义都可以。当然,静态常量的初始化是另一回事了。
具体例子参见《C++ Primer》第五版,7.6节,与静态成员的使用相关的部分。
因为在func(int j = i)时,this是第零个参数,第一个参数看不见this,自然没有办法取到this->i,就好比:
这里func的第二个参数没法用到第一个参数里的a。
成员变量可以是成员函数的默认实参,你的出错的问题不在这里,是你的成员变量初始化有问题。
在成员变量的定义的进行初始化,这种写法不对。
你private下面只能定义成员变量,或者初始化静态变量。普通成员变量的初始化是在构造函数里完成的。