簡體   English   中英

在用戶輸入的數據上使用c ++ const?

[英]using c++ const on user-entered data?

假設我想從cin中讀取一個整數然后使其成為不可變的。 我可以:

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

然后,我將有一個變量(b)初始化為用戶數據,但不能更改。 但是,我想我在這里濫用const關鍵字。 這是可以接受的嗎? 編譯器似乎沒問題,但我只是想知道它是否從風格的角度來看是正確的。

這完全沒問題。 您可以自由地從非常量數據創建常量變量,甚至是用戶輸入的數據。

你甚至可以編寫一個函數,這樣你就不會在之后有a變量。 例如:

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

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

這是一個哲學問題。 :)

在我看來,你沒有做任何風格偏差。 您定義的從該點不要再改變一個變量。 該變量值的歷史可以忽略不計。 :)

沒關系。 您可以放心,在運行程序的上下文中,“b”的值永遠不會改變。

雖然我同意Rob&David,IMO最好在可能的情況下將b作為參考:

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

雖然在int的情況下你可能不會節省太多,如果更大的對象你將保存復制c'tor呼叫和內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM