常成員函式不能改變資料成員的值,例如定義坐標類Coordinate,成員函式changeX():
void Coordinate::changeX() { x = 10; }
雖然changeX()沒有引數,但是它隱含一個引數——this指標:
void Coordinate::changeX(Coordinate* this) { this->x = 10; }
所以對于使用了const修飾的常成員函式:
void Coordinate::changeX() const { x = 10; }
編譯器就會把它理解為:
void Coordinate::changeX(const Coordinate* this) { this->x = 10; }
顯然通過常指標去修改它所指向的資料,是不允許的,
另外常成員與非常成員函式可以多載:
void changeX(); viod changeX() const;
那什么情況下呼叫常成員函式呢?這就需要呼叫常成員函式的物件在實體化的時候使用const修飾,得到一個常物件,進而呼叫的時候將呼叫常成員函式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59720.html
標籤:C++
上一篇:C++ Primer 抄書筆記(二)——變數和基本型別(上)
下一篇:演算法訓練 第五次作業:字串排序
