c++ - 使用cin时是否需要将一个变量存储两次?

标签 c++ variables cin

我正在学习“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/

相关文章:

c - 打印所有全局变量/局部变量?

c++ - 指向用户定义类型类的全局变量指针

c++ - 当我替换它们时,我是否需要删除我在类成员中设置的对象?

PHP MYSQL 更新查询与 @variable 不起作用

scala - Scala 会自动换行字段吗?

c++ - 读入非数值时的 cin 无限循环

c++ - 修改 const 函数中的非 const 属性

c++ - Openframeworks 全局照明

C++ cin 奇怪的行为

C++ 文本文件重定向 getline 无限循环