類的各種成員-> 成員方法 & 成員變數 普通的成員方法=>編譯器會添加一個this形參變數 1:屬於類的作用域 2:調用該方法時,需要依賴一個對象,而且常對象不能調 3:可以任意的訪問對象的私有成員變數 const 常成員方法 => const student *this 1:屬於類的作用域 2: ...
類的各種成員-> 成員方法 & 成員變數
普通的成員方法=>編譯器會添加一個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; 不可以將一個常指針賦值給一個普通對象指針.