staic成員方法、const成員方法和普通成員方法的區別||static和const能不能同時修飾一個成員方法||c++

目錄

 

1.static方法和普通成員方法有什麼區別?

2.const成員方法和普通成員方法有什麼區別?

3.static和const能不能同時修飾一個成員方法?


1.static方法和普通成員方法有什麼區別?

答:

靜態成員函數不包含this指針,靜態成員函數屬於這個類,不再僅僅屬於對象。因此靜態成員方法和普通成員方法的的區別是。

靜態成員函數不包含指向對象的this指針,普通成員函數包含一個指向對象的this指針,同時靜態成員函數不可以調用非靜態成員變量。

2.const成員方法和普通成員方法有什麼區別?

const成員方法即在函數的的末尾加上const關鍵字:

    如:

   

void Test() const{}

    在const成員方法裏面,不可以對成員變量作修改。

    在const成員方法裏面不可以調用普通成員方法,但是普通成員方法可以調用const成員方法。

3.static和const能不能同時修飾一個成員方法?

答:答案是否定的。C++編譯器在實現const成員方法的時候爲了防止成員變量被修改,會在函數中添加一個隱士的const *this指針。但當一個成員方法聲明爲staic型的時候,它的所屬者爲類,不再爲對象所擁有,所以static成員方法不具有this指針,這一點和const成員方法衝突,因此const和static不能同時修飾一個成員方法。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章