我正在阅读 lippman 的 c++ 入门书,位于 p。303 他们给了这个:
class Account {
private:
static constexpr int period = 30;
double daily_tbl[period];
}
如果成员仅在编译器可以替换成员值的上下文中使用,则不需要单独定义初始化的 const 或 constexpr static。但是,如果我们在值不能被替换的上下文中使用该成员,则该成员必须有一个定义。
还:
例如,如果我们将 Account::period 传递给接受 const int& 的函数,则必须定义 period。
所以我尝试添加这样一个功能:
class Account {
private:
static constexpr int period = 30;
double daily_tbl[period];
void foo(const int &i) { ; }
void bar() { foo(period); } //no error?
};
在那里我添加了一个接受 const int& 的函数。我也没有为周期变量添加任何定义。但我仍然没有得到任何错误,正如他们所说的那样。为什么不?