假设我想从cin中读取一个整数然后使其成为不可变的。我能做到:
int a;
cin >> a;
const int b = a;
然后,我将有一个变量(b)初始化为用户数据,但不能更改。但是,我想我在这里滥用const关键字。这是可以接受的吗?编译器似乎没问题,但我只是想从样式的角度来看是否正确。
答案 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的情况下,你可能不会节省太多,如果有更大的物体,你将保存复制电话和内存。