我正在阅读lippman的c ++入门,其中p.他们给出了这个:
class Account {
private:
static constexpr int period = 30;
double daily_tbl[period];
}
Run Code Online (Sandbox Code Playgroud)
如果成员仅在编译器可以替换成员的值的上下文中使用,则不需要单独定义初始化的const或constexpr静态.但是,如果我们在无法替换值的上下文中使用该成员,则必须有该成员的定义.
也:
例如,如果我们将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?
};
Run Code Online (Sandbox Code Playgroud)
在那里我添加了一个带有const int&的函数.我也没有为period变量添加任何定义.但我仍然没有错,因为他们说我应该得到.为什么不?
c++ ×1