学习 C++ Primer ,遇到点不解的问题
示例代码:
class Account
{
//......
private:
static constexpr int period = 30;
double daily_tbl[period];
};
“如果某个静态成员的应用场景仅限于编译器可以替换它的值的情况,则一个初始化的const或constexpr static 不需要分别定义。相反,如果我们将它用于值不能替换的场景中,则该成员必须有一条定义语句。”
“例如,如果period的唯一用途就是定义daily_tbl的维度,则不需要在Account外面专门定义period。此时,如果我们忽略了这条定义,那么对程序非常微小的改动也可能造成编译错误,因为程序找不到该成员的定义语句。举个例子当需要把Account::period传递给一个接受const int&的函数时,必须定义period”
就是对上面两端内容不是很理解,我也试验了一下给一个静态成员数据内类初始值后,不在类外再次定义,把它作为参数给其它函数,并没有引发错误。
#include<iostream>
using namespace std;
void print(const int& p)
{
cout << p << endl;
}
class A
{
public:
static constexpr int a = 2;
};
//constexpr double A::a;
int main()
{
cout << A::a << endl;
print(A::a);
return 0;
}
是否可以举个简单的例子,说明一下 不在类外再次定义给了类内初始值的静态成员数据 会导致的问题吗?