通过引用传递const值

zLe*_*eon 0 c++ pointers reference constants

假设我有这个程序:

const int width = 4;

void test(int&){}

int main() {
    test(width);
}
Run Code Online (Sandbox Code Playgroud)

这将无法编译.我注意到名称(例如宽度)的常量值(也是枚举常量)不能通过引用传递.为什么会这样?

Dav*_*rtz 11

想象一下:

void test (int& j) { j++; }
Run Code Online (Sandbox Code Playgroud)

如果test确实改变了引用的东西的值,显然我们不能用const参数调用它.如果没有,为什么它采用非const引用的参数呢?