const Date& default_date()
{
static const Date dd{1970, 1, 1};
return dd;
}
我正在阅读Stroustrup的书,但上面的代码却听不到。 这是关于在构造函数中提供默认值。
我的问题是
答案 0 :(得分:4)
在函数中定义静态变量时,它们只会被构造一次:第一次调用该函数时。由于变量具有静态持续时间,因此它位于内存的不同区域中,而不是位于堆栈上。它会一直保留在内存中,直到您的程序退出为止,这时所有本地定义的静态变量都将按照其创建的相反顺序销毁。
如果您想阅读C ++标准关于它的内容,请从这里开始:
答案 1 :(得分:0)
事实证明,您的第二个问题回答了第一个问题。是的,static
局部变量会在函数的多次调用中停留,这就是引用保持有效的原因。
对于第二个,这是正确的,这两个引用将指向同一对象。由于它们是const
,就像它们所引用的对象一样,所以通常这不是问题。