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

发布于 2024-12-11 18:31:22 字数 212 浏览 0 评论 0原文

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

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

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

Suppose that I wanted to read an integer from cin and then make it immutable. I can do:

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

Then, I would have a variable (b) which is initialized to user data, but cannot be changed. However, I think I'm abusing the const keyword here. Is this an acceptable thing to do? The compiler seems to be okay with it, but I'm just wondering if it's right from a stylistic point of view.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

毁梦 2024-12-18 18:31:22

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

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

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

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

It's completely fine. You're free to create const variables from non-const data, even user-entered data.

You might even write a function so you don't have the stray a variable sitting around afterward. For example:

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

int const b = read_int(std::cin);
灯下孤影 2024-12-18 18:31:22

这是一个哲学问题。 :)

在我看来,你并没有做出任何风格上的畸变。您定义了一个从那时起不再改变的变量。该变量值的历史可以忽略不计。 :)

This is a philosophical question. :)

In my opinion you are not doing any stylistic aberration. You are defined a variable that from that point do not change anymore. The history of that variable value is negligible. :)

雪落纷纷 2024-12-18 18:31:22

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

It's fine. You are assured that the value of 'b' will never change, within the context of the running program.

你没皮卡萌 2024-12-18 18:31:22

虽然我同意罗布和罗布的观点。 David,IMO 最好尽可能使 b 成为引用:

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

尽管在 int 的情况下,您可能不会节省太多,但在较大的对象的情况下,您将节省复制函数调用和内存。

Though I agree with Rob & David, IMO it's better to make b a reference when possible:

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

Though in case of int you may not save much, in case of bigger objects you'll save copy c'tor call and the memory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文