我正在学习“Accelerated C++”,我正在将我对章末练习的答案与找到的答案进行比较 here .在为行和列填充创建用户输入时,我写道:
int colpad;
cout << "Please enter the number of columns to pad: ";
cin >> colpad;
int rowpad;
cout << "Please enter the number of rows to pad: ";
cin >> rowpad;
然后在函数的其余部分继续使用 rowpad 和 colpad。这对我有用。
但是,上述站点的解决方案的作者做了我所做的,然后添加了(为清楚起见更改了变量名称):
const int rowpad = inrowpad; // vertical padding
const int colpad = incolpad; // horizontal padding
他的解决方案同样有效。我的问题是:我是否应该将 colpad 和 rowpad 的值再次存储为 const?这不就是占用额外的内存吗?
最佳答案
没有必要将值存储到 const
版本中。使用 const
对象可以防止意外更改,并且如果编译器可以确定用于初始化 const
对象的变量不会在函数内使用额外的内存,则它可能不会使用额外的内存改变。
顺便说一句,虽然代码在不同方面是错误的:您应该始终在读取操作成功后验证:
if (!(std::cin >> colpad)) {
// deal with the read failure
}
关于c++ - 使用cin时是否需要将一个变量存储两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30418309/