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

时间:2011-10-25 20:26:15

标签: c++ const

假设我想从cin中读取一个整数然后使其成为不可变的。我能做到:

int a;
cin >> a;
const int b = a;

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

4 个答案:

答案 0 :(得分:4)

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

你甚至可以编写一个函数,这样你之后就不会有迷路a变量。例如:

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

int const b = read_int(std::cin);

答案 1 :(得分:2)

这是一个哲学问题。 :)

在我看来,你没有做任何风格偏差。您被定义为一个变量,从该点不再变化。该变量值的历史可以忽略不计。 :)

答案 2 :(得分:0)

没关系。您可以放心,在运行程序的上下文中,“b”的值永远不会改变。

答案 3 :(得分:0)

虽然我同意Rob&大卫,国际海事组织最好尽可能使b成为参考:

int a;
cin >> a;
const int &b = a;

虽然在int的情况下,你可能不会节省太多,如果有更大的物体,你将保存复制电话和内存。