在用户输入的数据上使用 C++ const 吗?

Ord*_*Ord 3 c++ constants

假设我想从 cin 读取一个整数,然后使其不可变。我可以:

int a;
cin >> a;
const int b = a;
Run Code Online (Sandbox Code Playgroud)

然后,我将有一个变量(b),它被初始化为用户数据,但不能更改。但是,我认为我在这里滥用了 const 关键字。这是可以接受的事情吗?编译器似乎对此没问题,但我只是想知道从风格的角度来看它是否正确。

Rob*_*edy 5

完全没问题。您可以自由地从非常量数据(甚至用户输入的数据)创建常量变量。

您甚至可以编写一个函数,这样之后就不会出现杂散a变量了。例如:

int read_int(std::istream& in) {
  int a;
  in >> a;
  return a;
}

int const b = read_int(std::cin);
Run Code Online (Sandbox Code Playgroud)