簡體   English   中英

我在c ++代碼的這一部分找不到第二個const的實用程序,有人可以解釋一下嗎?

[英]I can't find the utility of the second const in this part of c++ code, can someone explain please?

const T&top()const {return m_Data.back(); }

這意味着成員函數中的this指針是const 換句話說,調用不會修改對象。 (以及它返回的任何引用/指針也將是const )。

如果是方法,則在類內部使用此語法。 標記為const方法(代碼中的第二個const )不能修改對象的屬性,只能讀取。 如果將對象實例化為const則Const方法是唯一可調用的方法。 對於intance:

class A {
public:
  void put(int v) {
    var = v;
  }

  int read() const {
    return var;
  }

private:
  int var;
}

int main() {
  A obj;
  obj.put(3);

  const A obj2 = obj;
  obj2.read(); // OK, returns 3;
  obj2.put(4); // Compile time error!
}

Michael的回答幾乎涵蓋了所有內容,但還有其他一些方面:

  • 您只能在const方法中調用const方法。
  • 如果將成員聲明為可變,則可以更改成員。
  • 您將無法更改班級中的任何其他成員。

只有成員函數可以是const限定的,非成員函數不能。 C ++也是如此。 C沒有成員函數的概念,因此他們不能。

暫無
暫無

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

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