C++ 入门练习 2.27 [第 5 版]

C++ Primer exercise 2.27 [5th ed.]

我正在做 C++ primer 第 5 版的练习 2.27,我对这个问题感到困惑:

练习:以下哪些初始化是合法的?解释原因。

(c) const int i = -1, &r = 0;

我得出的结论是 r 是非法的,因为这与以下相同:

const int i = -1;
int &r = 0;

但是this github repo建议(c)与下面相同:

const int i = -1;
const int &r = 0;

所以,这与我的回答相矛盾,请提供正确答案。

P.S.: 我是C++语言初学者

带有限定符(const)的类型说明符(int)属于声明中的所有声明符

const int i = -1, &r = 0;

因此声明符 i&r 具有类型说明符和限定符 const int。 此外,您可能不会写例如

int &r = 0;

因为临时对象(在本例中为表达式 0)可能不会绑定到非常量引用。

但是你可以这样写

int &&r = 0;