inline、const、mutable、this、static

爱新觉罗LQ發表於2024-10-13

inline、const、mutable、this、static

在類定義中實現成員函式 incline

成員函式末尾的 const(宣告和實現中都要加上 const)

作用:告訴系統,這個成員函式不會修改該物件裡任何成員變數的值等等,也就是說,這個成員函式不會修改類 Time的任何狀態。===> 也叫做常量成員函式

mutable(不穩定、容易改變)===> 突破 const 限制

使用 mutable 修飾一個成員變數 ===> 說明這個成員變數永遠處於可以被修改狀態,即便是在 const 修飾的成員函式中,也可以修改

返回自身物件的引用、this

//  int m
//  int& n = m
//  n 相當於 m 的一個綽號,對 n 的操作就是對 m 的操作

Time& Time::getTimeObject(int tmpHour){
    Hour += tmpHour;    
    return *this;   //  把物件自己給返回去了
}

呼叫

//  如何理解這個 this
//  咱們呼叫成員函式時,編譯器負責把這個物件的地址(&myTime) 傳遞給這個成員函式中的一個隱藏的 tihs 形參
//  this 指標只能在成員函式中使用,全域性函式以及靜態函式都不能使用 this指標
//  a. 在普通成員函式中,this是一個指向非 const 物件的 const 指標(型別為 Time,那麼 this 就是 Time* const this),表示 this 只能指向當前 Time 物件
//  b. 在 const 成員函式中,this是一個指向 const 物件的 const 指標(型別為 Time,那麼 this 就是 const Time* const this)
//  注意:第一個 const:代表值不能改,第二個 const:代表只能指向這個物件

Time myTime;
Time& time = myTime.getTimeObject(11);

static成員

呼叫方式:

  • 類名::成員變數名
  • 類名::成員函式名

如何定義靜態成員變數(分配記憶體):一般會在某個.cpp 檔案中開頭定義這個靜態成員變數,這樣就能保證在呼叫任何函式之前,這個靜態成員變數已經成功初始化了

相關文章