【发布时间】:2013-01-10 22:13:15
【问题描述】:
我正在阅读 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& 的函数。我也没有为周期变量添加任何定义。但我仍然没有得到任何错误,正如他们所说的那样。为什么不呢?
【问题讨论】:
标签: c++