類的各種成員-> 成員方法 & 成員變數
普通的成員方法=>編譯器會添加一個this形參變數
1:屬于類的作用域
2:呼叫該方法時,需要依賴一個物件,而且常物件不能調
3:可以任意的訪問物件的私有成員變數
const 常成員方法 => const student *this
1:屬于類的作用域
2:呼叫依賴物件,普通物件和常物件都可以呼叫
3:可以任意訪問物件的私有成員,但是只能讀,不能寫.
static 靜態成員方法=>編譯器不會添加this形參變數
1:屬于類的作用域
2:用類名作用域來呼叫方法
3:可以任意訪問物件的私有成員,僅限于不依賴物件的成員(只能呼叫其他的static靜態成員)
注意:只要是普通方法只設計讀操作,就一定設定為常成員方法,這樣普通物件和常物件都可以調
點擊查看代碼
class people{
public:
//普通的成員方法,通過物件來呼叫該方法,產生this指標,接受物件呼叫時,傳遞過來的地址
void setAge(int _age){
this->age=_age;
}
//常成員方法
void showAget() const {
cout<<age<<endl;
}
// 靜態成員方法,通過類名作用域來呼叫靜態方法,不產生this指標,所以不需要通過物件呼叫
static void showCounter(){
cout<<counter<<endl;
}
private:
//普通成員變數
int age;
//靜態成員變數
static int counter;//宣告
};
//static 成員變數一定要在類外定義并做初始化,所有物件共享,不屬于物件,屬于類級別
int people::counter=0; //
int main(){
people p1;
people p2;
//static int counter 是p1和p2公用的,people物件在計算存盤空間的時候是不考慮 靜態變數
//p1物件和p2物件存盤在堆疊上, static int counter 存盤在資料段上.bss段上
return 1;
}
const pepole p3;
p3.setAge(30);
上面這個編譯報錯,為什么?
setAge方法產生的this指標是普通物件指標,而p3物件是常物件,產生的指標常指標 const people *pp; 不可以將一個常指標賦值給一個普通物件指標.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/532505.html
標籤:C++
上一篇:<四>建構式初始化串列
下一篇:<六>指向類成員的指標
